Skip to content

Instantly share code, notes, and snippets.

@jimfrenette
Last active October 5, 2018 01:25
Show Gist options
  • Save jimfrenette/3ab5b9b1d9e906eff9bfaee204a85585 to your computer and use it in GitHub Desktop.
Save jimfrenette/3ab5b9b1d9e906eff9bfaee204a85585 to your computer and use it in GitHub Desktop.
local dev docker-compose file for wordpress site
version: "2"
services:
mariadb:
# image: wodby/mariadb:10.2-3.0.2
image: wodby/mariadb:10.1-3.0.2
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
volumes:
- mysql:/var/lib/mysql
# - ./mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here.
# - /path/to/mariadb/data/on/host:/var/lib/mysql # I want to manage volumes manually.
# postgres:
# image: wodby/postgres:10.1-1.2.0
## image: wodby/postgres:9.6-1.2.0
# environment:
# POSTGRES_PASSWORD: password
# POSTGRES_DB: wordpress
# POSTGRES_USER: wordpress
# volumes:
# - ./postgres-init:/docker-entrypoint-initdb.d # Place init file(s) here.
# - /path/to/postgres/data/on/host:/var/lib/postgresql/data # I want to manage volumes manually.
php:
# 1. Images with vanilla WordPress – wodby/wordpress:[WP_VERSION]-[PHP_VERSION]-[STABILITY_TAG].
# image: wodby/wordpress:4-7.2-3.3.1
# image: wodby/wordpress:4-7.1-3.3.1
# image: wodby/wordpress:4-7.0-3.3.1
# image: wodby/wordpress:4-5.6-3.3.1
# 2. Images without WordPress – wodby/wordpress-php:[PHP_VERSION]-[STABILITY_TAG].
# image: wodby/wordpress-php:7.2-3.3.1
image: wodby/wordpress-php:7.1-3.3.1
# image: wodby/wordpress-php:7.0-3.3.1
# image: wodby/wordpress-php:5.6-3.3.1
# 3. Images without WordPress – wodby/wordpress-php:[PHP_VERSION]-[STABILITY_TAG].Version for development (--enable-debug)
# image: wodby/wordpress-php:7.2-dev-3.3.1
# image: wodby/wordpress-php:7.1-dev-3.3.1
# image: wodby/wordpress-php:7.0-dev-3.3.1
# image: wodby/wordpress-php:5.6-dev-3.3.1
environment:
PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
PHP_FPM_CLEAR_ENV: "no"
# PHP_XDEBUG: 1
# PHP_XDEBUG_DEFAULT_ENABLE: 1
# PHP_XDEBUG_REMOTE_CONNECT_BACK: 0
# PHP_XDEBUG_REMOTE_HOST: "10.254.254.254"
# PHP_XDEBUG_PROFILER_OUTPUT_DIR: /mnt/files/xdebug/profiler
# PHP_XDEBUG_TRACE_OUTPUT_DIR: /mnt/files/xdebug/traces
volumes:
- ./:/var/www/html
## Options for macOS users (http://docs.docker4wordpress.org/en/latest/macos)
# - codebase:/var/www/html:cached # User-guided caching
# - docker-sync:/var/www/html # Docker-sync
## For Xdebug profiler files
# - files:/mnt/files
nginx:
image: wodby/wordpress-nginx:4-1.13-3.0.2
# image: wodby/wordpress-nginx:4-1.12-3.0.2
environment:
NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
NGINX_ERROR_LOG_LEVEL: debug
NGINX_BACKEND_HOST: php
volumes:
- ./:/var/www/html
# Options for macOS users (http://docs.docker4wordpress.org/en/latest/macos)
# - codebase:/var/www/html:cached # User-guided caching
# - docker-sync:/var/www/html # Docker-sync
depends_on:
- php
labels:
- 'traefik.backend=nginx'
- 'traefik.port=80'
- 'traefik.frontend.rule=Host:dev.docker.jimfrenette.com'
# apache:
# image: wodby/php-apache:2.4-2.0.2
# depends_on:
# - php
# environment:
# APACHE_LOG_LEVEL: debug
# APACHE_BACKEND_HOST: php
# APACHE_SERVER_ROOT: /var/www/html
# volumes:
# - codebase:/var/www/html
## Options for macOS users (http://docs.docker4wordpress.org/en/latest/macos)
## - codebase:/var/www/html:cached # User-guided caching
## - docker-sync:/var/www/html # Docker-sync
# labels:
# - 'traefik.backend=apache'
# - 'traefik.port=80'
# - 'traefik.frontend.rule=Host:wp.docker.localhost'
# varnish:
# image: wodby/wordpress-varnish:4.1-2.3.1
# depends_on:
# - nginx
# environment:
# VARNISH_SECRET: secret
# VARNISH_BACKEND_HOST: nginx
# VARNISH_BACKEND_PORT: 80
# labels:
# - 'traefik.backend=varnish'
# - 'traefik.port=6081'
# - 'traefik.frontend.rule=Host:varnish.wp.docker.localhost'
# redis:
# image: wodby/redis:4.0-2.1.4
## image: wodby/redis:3.2-2.1.4
pma:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mariadb
PMA_USER: wordpress
PMA_PASSWORD: wordpress
PHP_UPLOAD_MAX_FILESIZE: 1G
PHP_MAX_INPUT_VARS: 1G
labels:
- 'traefik.backend=pma'
- 'traefik.port=80'
- 'traefik.frontend.rule=Host:pma.wp.docker.localhost'
# athenapdf:
# image: arachnysdocker/athenapdf-service:2.10.0
# environment:
# WEAVER_AUTH_KEY: weaver-auth-key
# WEAVER_ATHENA_CMD: "athenapdf -S"
# WEAVER_MAX_WORKERS: 10
# WEAVER_MAX_CONVERSION_QUEUE: 50
# WEAVER_WORKER_TIMEOUT: 90
# WEAVER_CONVERSION_FALLBACK: false
# blackfire:
# image: blackfire/blackfire
# environment:
# BLACKFIRE_SERVER_ID: XXXXX
# BLACKFIRE_SERVER_TOKEN: YYYYY
# webgrind:
# image: wodby/webgrind:1.5-1.0.0
# environment:
# WEBGRIND_PROFILER_DIR: /mnt/files/xdebug/profiler
# labels:
# - 'traefik.backend=webgrind'
# - 'traefik.port=8080'
# - 'traefik.frontend.rule=Host:webgrind.wp.docker.localhost'
# volumes:
# - files:/mnt/files
mailhog:
image: mailhog/mailhog
labels:
- 'traefik.backend=mailhog'
- 'traefik.port=8025'
- 'traefik.frontend.rule=Host:mailhog.wp.docker.localhost'
# portainer:
# image: portainer/portainer
# command: --no-auth -H unix:///var/run/docker.sock
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# labels:
# - 'traefik.backend=portainer'
# - 'traefik.port=9000'
# - 'traefik.frontend.rule=Host:portainer.wp.docker.localhost'
traefik:
image: traefik
command: -c /dev/null --web --docker --logLevel=INFO
ports:
- '8000:80'
# - '8080:8080' # Dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock
volumes:
mysql:
## Docker-sync for macOS users
# docker-sync:
# external: true
## For Xdebug profiler
# files:
@jimfrenette
Copy link
Author

For this setup, if importing the prod data, search and replace the host name and append the port.
e.g., in mysql dump:
Find: jimfrenette.com
Replace: dev.docker.jimfrenette.com:8000

etc/hosts
127.0.0.1 dev.docker.jimfrenette.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment