{"id":20019313,"url":"https://github.com/jbris/drupal-enterprise-stack","last_synced_at":"2026-04-11T01:02:42.088Z","repository":{"id":42734543,"uuid":"242309585","full_name":"JBris/drupal-enterprise-stack","owner":"JBris","description":"A Docker stack supporting Drupal, RESTful \u0026 GraphQL APIs, OAuth 2 authentication, Redis, Postgres, Nginx, Adminer, Elasticsearch, and Kibana. ","archived":false,"fork":false,"pushed_at":"2022-12-11T15:36:17.000Z","size":21858,"stargazers_count":2,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T16:08:15.095Z","etag":null,"topics":["adminer","docker","docker-compose","drupal","drupal-8","drupal-8-module","drupal-8-modules","drupal-module","drupal-modules","drush","elasticsearch","graphql","kibana","mailhog","nginx","oauth2","redis","secret","stack"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JBris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-22T08:51:51.000Z","updated_at":"2024-03-21T16:31:37.000Z","dependencies_parsed_at":"2023-01-27T02:15:23.254Z","dependency_job_id":null,"html_url":"https://github.com/JBris/drupal-enterprise-stack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBris%2Fdrupal-enterprise-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBris%2Fdrupal-enterprise-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBris%2Fdrupal-enterprise-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBris%2Fdrupal-enterprise-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JBris","download_url":"https://codeload.github.com/JBris/drupal-enterprise-stack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241453448,"owners_count":19965203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adminer","docker","docker-compose","drupal","drupal-8","drupal-8-module","drupal-8-modules","drupal-module","drupal-modules","drush","elasticsearch","graphql","kibana","mailhog","nginx","oauth2","redis","secret","stack"],"created_at":"2024-11-13T08:26:55.767Z","updated_at":"2026-04-11T01:02:41.929Z","avatar_url":"https://github.com/JBris.png","language":"PHP","readme":"# drupal-enterprise-stack\n\n* [Drupal](#drupal)  \n* [Drush](#drush)  \n* [Nginx](#nginx)\n* [OAuth2](#oauth2)  \n* [PostgreSQL](#postgresql)  \n* [Redis](#redis)  \n* [Elasticsearch and Kibana](#elasticsearch-kibana)  \n* [Mailhog](#mailhog)  \n\n## Drupal \u003ca name=\"drupal\"/\u003e\n\n*Link*: https://www.drupal.org/8\n\nDrupal 8 comes preconfigured and heavily leverages the other services available in the docker stack. \n\nThe latest release of composer will be installed during the image build. Composer can be called using `make composer a=\"$ARG\"`. For example, `make composer a=\"require drupal/redis\"` to retrieve the Redis module and its dependencies.\n\nAll included contrib modules can be found here: https://github.com/JBris/drupal-enterprise-stack/tree/master/app/modules/contrib\n\nAn example settings.php file can be found here. https://github.com/JBris/drupal-enterprise-stack/blob/master/app/sites/default/settings.php. Docker environment variables can be accessed using the `getenv()` function.\n\nAn example site configuration is included here: [config](https://github.com/JBris/drupal-enterprise-stack/tree/master/app/sites/default/files/config_MLQPXj45WOqx2XBN3R5d-PkA276UGlotFeUaBTV7U0uk1ZuVqjB9syEEWKkR6JsKf8nlNqfJFQ/sync). You should remove this directory and re-add the config_* pattern to .gitignore.\n\n## Drush \u003ca name=\"drush\"/\u003e\n\n*Link*: https://www.drush.org/\n\nA separate drush container has been included to execute drush commands on your Drupal instance. These can be executed using `make drush a=\"$ARG\"`. For example, `make drush a=\"cr\"` will clear the Drupal cache.\n\n## Nginx \u003ca name=\"nginx\"/\u003e\n\nNginx acts as the Drupal service's web server. The default configuration file can be found here: https://github.com/JBris/drupal-enterprise-stack/blob/master/services/nginx/conf.d/default.conf\n\nTo connect to the drupal service, `server drupal:9000;` must be included in an upstream block.\n\n## OAuth2 \u003ca name=\"oauth2\"/\u003e\n\n*Link*: https://www.drupal.org/project/simple_oauth\n\n*Link*: https://github.com/thephpleague/oauth2-client\n\nFirst, enable the Simple OAuth module. \n\nNext, visit http://localhost/admin/config/people/simple_oauth. You may either use an existing public-private key pair or generate a new pair by selecting `Generate keys`. Then select the `Add Client` button. Fill out the inputs fields as required. The **New Secret** field is an optional secret key needed to create a new token. Assign a user role to the **Scopes** checkbox lists (you may need to create a new role first). Finally, click `Save`.\n\nTest that your configuration is successful by making a **POST** request to http://localhost/oauth/token. The request body should be submitted as multipart form data. \n\n| Key           | Value         |  \n| ------------- |:-------------:|  \n| grant_type    | password      | \n| client_id     | $UUID         |    \n| username      | username      |    \n| password      | password      |    \n| client_secret | secret        |    \n\nThe *client_id* will be one of the UUIDs listed at http://localhost/admin/config/services/consumer. The client_secret is an optional value that you would have entered when creating the OAuth client via the **New Secret** field.\n\n## PostgreSQL \u003ca name=\"postgresql\"/\u003e\n\nThe Drupal stack uses Postgres as its database. \n\nDatabase dumps can be imported and exported using `make dbimp` and `make dbexp` respectively. Dumps can be found in the `data` directory.\n\nThe following settings can be configured in your .env file:\n\n| Name          | Default Value |  \n| ------------- |:-------------:|  \n| DB_NAME       | drupal        | \n| DB_USER       | user          |    \n| DB_PASSWORD   | pass          |    \n| DB_ROOT_PASSWORD | password   |    \n| DB_HOST       | postgres      |    \n| DB_PORT       | 5432          |    \n| DB_CONTAINER_PORT | 5432      |    \n| DB_DRIVER     | pgsql         |    \n\n\n## Redis \u003ca name=\"redis\"/\u003e\n\n*Link:* https://www.drupal.org/project/redis\n\nRedis has been included for performant and scalable caching and job queueing purposes.\n\nThe Drupal stack uses the PHPRedis as its PHP client. This extension will be installed during the Drupal image build process.\n\nEnable the Redis module. Visit http://localhost/admin/reports/redis to view the current status of the Redis module.\n\nEnsure that the following settings have been added to the settings.php file.\n\n```\n$settings['redis.connection']['interface'] = 'PhpRedis'; \n$settings['redis.connection']['host'] = 'redis';  \n$settings['redis.connection']['port'] = '6379';  \n$settings['cache']['default'] = 'cache.backend.redis';\n$settings['queue_default'] = 'queue.redis_reliable';\n$settings['container_yamls'][] = 'modules/contrib/redis/example.services.yml';\n```\n\n## Elasticsearch and Kibana \u003ca name=\"elasticsearch-kibana\"/\u003e\n\n*Link:* https://www.drupal.org/project/search_api\n\n*Link:* https://www.drupal.org/project/elasticsearch_connector\n\nElasticsearch and Kibana have been included in the Docker stack to facilitate powerful full-text search functionality.\n\nFirstly, enable the Search API and Elasticsearch Connector modules.\n\nVisit http://localhost/admin/config/search/elasticsearch-connector. Select `Add cluster`. By default, the server URL will be http://elasticsearch:9200 - the URL to access the Elasticsearch container within a Docker bridge network.\n\nNext, visit http://localhost/admin/config/search/search-api. Click `Add server`. Select Elasticsearch as your backend, and choose your newly configured Elasticsearch cluster from the drop-down list.\n\nFinally, click `Add index`. Tick the content that you want Elasticsearch to index from the checkbox list. Choose your newly configured Elasticsearch server from the bulletpoint list. You can either save your configuration now or select the fields that you wish to index next. Finally, you may select `Search API processors` to modify your search queries (e.g. string tokenizers and field weightings).\n\n## Mailhog \u003ca name=\"mailhog\"/\u003e\n\n*Link:* https://github.com/mailhog/MailHog\n\n*Link:* https://github.com/mailhog/mhsendmail\n\nThe Mailhog service has been included in the Docker stack to capture emails during local development.\n\nThe mhsendmail package will be installed during the Docker build phase. This package acts as a sendmail replacement.\n\nThe PHP sendmail path will be set to `sendmail_path='/usr/local/bin/mhsendmail --smtp-addr=\"mailhog:1025` in `/usr/local/etc/php/conf.d/sendmail.ini` within the Drupal container.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbris%2Fdrupal-enterprise-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbris%2Fdrupal-enterprise-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbris%2Fdrupal-enterprise-stack/lists"}