This is a custom "ready-to-use" docker stack based on docker4Drupal
. If you are looking for more information over the original docker4drupal
, please refer to the section Docker-based Drupal stack
For a quick set-up guide please check the steps below.
- Allow custom changes to the
.env
file; - Add behat tests;
https://www.docker.com/products/docker-desktop
This docker-4-drupal-custom
config assumes a couple of things:
- We removed the
docker-compose.override.yml
file because this should be a copy/paste docker stack; - When using Xdebug, the
IDE_KEY
is fixed tophpstorm
, feel free to change it; - MacOS as machine OS;
- There are a lot of more options for this docker stack, but for the purpose of this custom set up we removed them;
- We are not using mutagen due to permission issues;
- The following tools are enabled by default:
- phpMyAdmin;
- Mailhog;
Run the following command to install Drupal Social, and replace SOCIAL-DIRECTORY
with the directory of your choice.
composer create-project goalgorilla/social_template:dev-master SOCIAL-DIRECTORY --no-interaction
Copy the entire content of docker-4-drupal-custom
folder to a DOCKER-DIRECTORY
of your choice inside the newly cloned Drupal Social directory.
The folder structure should be like this:
[SOCIAL-DIRECTORY]
- [CLONED DRUPAL SOCIAL FOLDERS AND FILES]
- [DOCKER-DIRECTORY]
- Makefile ( to execute the docker commands )
- Other files from this current docker-4-drupal-custom repo
- [HTML - DRUPAL ACTUAL FILES]
Once you copy the docker-4-drupal-custom
files to the DOCKER-DIRECTORY
edit the .env
file and change the following to your choice:
COMPOSE_PROJECT_NAME=[COMPOSE_PROJECT_NAME]
PROJECT_NAME=[PROJECT_NAME]
PROJECT_BASE_URL=[PROJECT_BASE_URL].docker.localhost
PROJECT_PORT=[PROJECT_PORT]
For each project, you can set a different value at .env
this way you can spin up multiple projects at once.
Go to DOCKER-DIRECTORY
and execute the following:
make up
After the containers start, it's time to switch to the docker php container shell and install Drupal Social
make shell
dsisocial
Once the installation finishes, the website is available through the same url that was configured at .env
file:
# Website
http://[PROJECT_BASE_URL].docker.localhost:[PROJEC_PORT]
# phpMyAdmin
http://pma.[PROJECT_BASE_URL].docker.localhost:[PROJEC_PORT]
# Mailhog
http://mailhog.[PROJECT_BASE_URL].docker.localhost:[PROJEC_PORT]
Command | Description |
---|---|
dsi | Drush install a new site with admin/admin credentials and download and enable admin_toolbar. |
dsisocial | Drush install open social profile ( requires the right codebase ). |
stanbaseline | Creates a new php stan baseline. Please note that the stan scripts needs to be adjusted to the root "/var/www/html/html". |
stancheck | Executes the phpstan check. |
cscheck | Executes the code sniffer checks. |
unitcheck | Executes the unit tests on social profile. |
allcheck | Executes all tests. |
importdb {database-name} [true] | Import a database from "[DOCKER-DIRECTORY]/_resources/database-dumps/{database-name}.sql", if second parameter is true db-update will be executed |
Xdebug should work out of the box from the server, there is only one configuration needed:
- Preference > Settings > PHP > Servers;
- Add a new server with name
phpstorm
; - Host should be
http://[PROJECT_BASE_URL].docker.localhost
; - Port
[PROJECT_PORT]
; - Check
Use path mappings
; - The root folder of your
SOCIAL-DIRECTORY
should map to/var/www/html
; - Save > Good to go!
This configuration has two custom directories:
- database-data
- Storing of permanent database files;
- database-init
- Holds a
[filename].sql.gz
or a[filename].sql
that will be imported once the docker spins up, only if there is not amysql
folder insidedatabase-data
;
- Holds a
- Woodby PHP: https://github.com/wodby/php
- Environment variables: https://github.com/wodby/php#environment-variables
Command | Description |
---|---|
make up | Start up containers. |
make stop | Stop containers. |
make start | Start containers without updating. |
make prune | Remove containers and their volumes. |
make ps | List running containers. |
make shell | Access php container via shell. |
make composer | Executes composer command in a specified COMPOSER_ROOT directory (default is /var/www/html ) |
make drush | Executes drush command in a specified DRUPAL_ROOT directory (default is /var/www/html/html ) |
make logs [service-name] | View containers logs or view specific service log. |
Docker4Drupal is a set of docker images optimized for Drupal. Use docker-compose.yml
file from the latest stable release to spin up local environment on Linux, Mac OS X and Windows.
- Read the docs on how to use
- Ask questions on Slack
- Follow @wodbycloud for future announcements
The Drupal stack consist of the following containers:
Container | Versions | Image | ARM64 support | Enabled by default |
---|---|---|---|---|
Nginx | 1.21, 1.20, 1.19 | wodby/nginx | ✓ | ✓ |
Apache | 2.4 | wodby/apache | ✓ | |
Drupal | 9, 8, 7 | wodby/drupal | ✓ | ✓ |
PHP | 8.0, 7.4, 7.3 | wodby/drupal-php | ✓ | |
Crond | wodby/drupal-php | ✓ | ✓ | |
MariaDB | 10.5, 10.4, 10.3, 10.2 | wodby/mariadb | ✓ | ✓ |
PostgreSQL | 13, 12, 11, 10, 9.6 | wodby/postgres | ✓ | |
Redis | 6, 5 | wodby/redis | ✓ | |
Memcached | 1 | wodby/memcached | ||
Varnish | 6.0, 4.1 | wodby/varnish | ||
Node.js | 16, 14, 12 | wodby/node | ||
Drupal node | 1.0 | wodby/drupal-node | ||
Solr | 8, 7, 6, 5 | wodby/solr | ||
Elasticsearch | 7, 6 | wodby/elasticsearch | ||
Kibana | 7, 6 | wodby/kibana | ||
OpenSMTPD | 6.0 | wodby/opensmtpd | ||
Mailhog | latest | mailhog/mailhog | ✓ | |
AthenaPDF | 2.16.0 | arachnysdocker/athenapdf-service | ||
Rsyslog | latest | wodby/rsyslog | ||
Blackfire | latest | blackfire/blackfire | ||
Webgrind | 1 | wodby/webgrind | ||
Xhprof viewer | latest | wodby/xhprof | ||
Adminer | 4.6 | wodby/adminer | ||
phpMyAdmin | latest | phpmyadmin/phpmyadmin | ||
Selenium chrome | 3.141 | selenium/standalone-chrome | ||
Traefik | latest | _/traefik | ✓ | ✓ |
Supported Drupal versions: 9 / 8 / 7
Full documentation is available at https://wodby.com/docs/stacks/drupal/local.
Images tags format is [VERSION]-[STABILITY_TAG]
where:
[VERSION]
is the version of an application (without patch version) running in a container, e.g. wodby/nginx:1.15-x.x.x
where Nginx version is 1.15
and x.x.x
is a stability tag. For some images we include both major and minor version like PHP 7.2
, for others we include only major like Redis 5
.
[STABILITY_TAG]
is the version of an image that corresponds to a git tag of the image repository, e.g. wodby/mariadb:10.2-3.3.8
has MariaDB 10.2
and stability tag 3.3.8
. New stability tags include patch updates for applications and image's fixes/improvements (new env vars, orchestration actions fixes, etc). Stability tag changes described in the corresponding a git tag description. Stability tags follow semantic versioning.
We highly encourage to use images only with stability tags.
We regularly update images used in this stack and release them together, see releases page for full changelog and update instructions. Most of routine updates for images and this project performed by the bot via scripts located at wodby/images.
Docker4Drupal is a project designed to help you spin up local environment with docker-compose. If you want to deploy a consistent stack with orchestrations to your own server, check out Drupal stack on Wodby .
This project is licensed under the MIT open source license.