Skip to content

Instantly share code, notes, and snippets.

@itsazzad
Last active June 24, 2020 06:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itsazzad/d40070454d3369a4568c6bd8dc91a5fd to your computer and use it in GitHub Desktop.
Save itsazzad/d40070454d3369a4568c6bd8dc91a5fd to your computer and use it in GitHub Desktop.
Magento Docker
version: '2.1'
services:
db:
hostname: db.magento2.docker
image: 'mariadb:10.2'
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
ports:
- '3306'
volumes:
- 'docker-mnt:/mnt:rw,delegated'
- 'mymagento-mariadb-conf:/etc/mysql/mariadb.conf.d'
- 'mymagento-magento-db:/var/lib/mysql'
- 'docker-entrypoint:/docker-entrypoint-initdb.d'
healthcheck:
test: 'mysqladmin ping -h localhost'
interval: 30s
timeout: 30s
retries: 3
command: '--auto_increment_increment=3 --auto_increment_offset=2'
networks:
magento:
aliases:
- db.magento2.docker
redis:
hostname: redis.magento2.docker
image: 'redis:5.0'
volumes:
- /data
ports:
- 6379
healthcheck:
test: 'redis-cli ping || exit 1'
interval: 30s
timeout: 30s
retries: 3
networks:
magento:
aliases:
- redis.magento2.docker
elasticsearch:
hostname: elasticsearch.magento2.docker
image: 'magento/magento-cloud-docker-elasticsearch:6.5-1.1'
networks:
magento:
aliases:
- elasticsearch.magento2.docker
fpm:
hostname: fpm.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
extends: generic
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- fpm.magento2.docker
depends_on:
db:
condition: service_healthy
web:
hostname: web.magento2.docker
image: 'magento/magento-cloud-docker-nginx:latest-1.1'
extends: generic
ports:
- '80:80'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
environment:
- VIRTUAL_HOST=${VIRTUAL_HOST}
- VIRTUAL_PORT=${VIRTUAL_PORT}
- HTTPS_METHOD=${HTTPS_METHOD}
- WITH_XDEBUG=${WITH_XDEBUG}
networks:
magento:
aliases:
- web.magento2.docker
depends_on:
fpm:
condition: service_started
varnish:
hostname: varnish.magento2.docker
image: 'magento/magento-cloud-docker-varnish:latest-1.1'
networks:
magento:
aliases:
- magento2.docker
depends_on:
web:
condition: service_healthy
tls:
hostname: tls.magento2.docker
image: 'magento/magento-cloud-docker-tls:latest-1.1'
ports:
- '443:443'
environment:
HTTPS_UPSTREAM_SERVER_ADDRESS: varnish
networks:
magento:
aliases:
- tls.magento2.docker
depends_on:
varnish:
condition: service_started
selenium:
hostname: selenium.magento2.docker
image: 'selenium/standalone-chrome:latest'
ports:
- 4444
extends: generic
networks:
magento:
aliases:
- selenium.magento2.docker
depends_on:
web:
condition: service_started
test:
hostname: test.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:rw,delegated'
- 'magento-vendor:/app/vendor:rw,delegated'
- 'magento-generated:/app/generated:rw,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
networks:
magento:
aliases:
- test.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
fpm_xdebug:
hostname: fpm_xdebug.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
extends: generic
ports:
- '9001:9001'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
environment:
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
networks:
magento:
aliases:
- fpm_xdebug.magento2.docker
depends_on:
db:
condition: service_started
generic:
hostname: generic.magento2.docker
image: 'alpine:latest'
env_file: ./.docker/config.env
environment:
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
build:
hostname: build.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:rw,delegated'
- 'magento-vendor:/app/vendor:rw,delegated'
- 'magento-generated:/app/generated:rw,delegated'
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
networks:
magento-build:
aliases:
- build.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
deploy:
hostname: deploy.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- deploy.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
cron:
hostname: cron.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
command: run-cron
environment:
CRONTAB: '* * * * * root cd /app && /usr/local/bin/php bin/magento cron:run >> /app/var/log/cron.log'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- cron.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
rabbitmq:
image: rabbitmq
container_name: rabbitmq
ports:
- "5672:5672"
volumes:
magento:
driver_opts:
type: none
device: '${PWD}/'
o: bind
docker-mnt:
driver_opts:
type: none
device: '${PWD}/.docker/mnt'
o: bind
magento-vendor: { }
magento-generated: { }
magento-var: { }
magento-app-etc: { }
magento-pub-media: { }
magento-pub-static: { }
magento-dev:
driver_opts:
type: none
device: '${PWD}/dev'
o: bind
mymagento-mariadb-conf:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/mariadb.conf.d'
o: bind
mymagento-magento-db: { }
docker-entrypoint:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/docker-entrypoint-initdb.d'
o: bind
networks:
magento:
driver: bridge
magento-build:
driver: bridge
version: '2.1'
services:
db:
hostname: db.magento2.docker
image: 'mariadb:10.2'
environment:
- MYSQL_ROOT_PASSWORD=magento2
- MYSQL_DATABASE=magento2
- MYSQL_USER=magento2
- MYSQL_PASSWORD=magento2
ports:
- '3306'
volumes:
- 'docker-mnt:/mnt:rw,delegated'
- 'mymagento-mariadb-conf:/etc/mysql/mariadb.conf.d'
- 'mymagento-magento-db:/var/lib/mysql'
- 'docker-entrypoint:/docker-entrypoint-initdb.d'
networks:
magento:
aliases:
- db.magento2.docker
healthcheck:
disable: true
fpm:
hostname: fpm.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
extends: generic
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- fpm.magento2.docker
depends_on:
- db
web:
hostname: web.magento2.docker
image: 'magento/magento-cloud-docker-nginx:latest-1.1'
extends: generic
ports:
- '80:80'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
environment:
- VIRTUAL_HOST=magento2.docker
- VIRTUAL_PORT=80
- HTTPS_METHOD=noredirect
- WITH_XDEBUG=1
networks:
magento:
aliases:
- web.magento2.docker
depends_on:
- fpm
build:
hostname: build.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:rw,delegated'
- 'magento-vendor:/app/vendor:rw,delegated'
- 'magento-generated:/app/generated:rw,delegated'
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
networks:
magento:
aliases:
- build.magento2.docker
depends_on:
- db
generic:
hostname: generic.magento2.docker
image: 'alpine:latest'
env_file: ./.docker/config.env
environment:
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
- ENABLE_SENDMAIL=true
healthcheck:
disable: true
phpmyadmin:
hostname: phpmyadmin.magento2.docker
image: phpmyadmin/phpmyadmin
environment:
- PMA_HOST=db
restart: always
ports:
- 8080:80
volumes:
- /sessions
depends_on:
- db
networks:
magento:
aliases:
- phpmyadmin.magento2.docker
volumes:
magento:
driver_opts:
type: none
device: '${PWD}/'
o: bind
docker-mnt:
driver_opts:
type: none
device: '${PWD}/.docker/mnt'
o: bind
magento-vendor: { }
magento-generated: { }
magento-var: { }
magento-app-etc: { }
magento-pub-media: { }
magento-pub-static: { }
mymagento-mariadb-conf:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/mariadb.conf.d'
o: bind
mymagento-magento-db: { }
docker-entrypoint:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/docker-entrypoint-initdb.d'
o: bind
networks:
magento:
driver: bridge
version: '2.1'
services:
db:
hostname: db.magento2.docker
image: 'mariadb:10.2'
environment:
- MYSQL_ROOT_PASSWORD=magento2
- MYSQL_DATABASE=magento2
- MYSQL_USER=magento2
- MYSQL_PASSWORD=magento2
ports:
- '3306'
volumes:
- 'docker-mnt:/mnt:rw,delegated'
- 'mymagento-mariadb-conf:/etc/mysql/mariadb.conf.d'
- 'mymagento-magento-db:/var/lib/mysql'
- 'docker-entrypoint:/docker-entrypoint-initdb.d'
healthcheck:
test: 'mysqladmin ping -h localhost'
interval: 30s
timeout: 30s
retries: 3
command: '--auto_increment_increment=3 --auto_increment_offset=2'
networks:
magento:
aliases:
- db.magento2.docker
redis:
hostname: redis.magento2.docker
image: 'redis:5.0'
volumes:
- /data
ports:
- 6379
healthcheck:
test: 'redis-cli ping || exit 1'
interval: 30s
timeout: 30s
retries: 3
networks:
magento:
aliases:
- redis.magento2.docker
elasticsearch:
hostname: elasticsearch.magento2.docker
image: 'magento/magento-cloud-docker-elasticsearch:6.5-1.1'
networks:
magento:
aliases:
- elasticsearch.magento2.docker
fpm:
hostname: fpm.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
extends: generic
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- fpm.magento2.docker
depends_on:
db:
condition: service_healthy
web:
hostname: web.magento2.docker
image: 'magento/magento-cloud-docker-nginx:latest-1.1'
extends: generic
ports:
- '80:80'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
environment:
- VIRTUAL_HOST=magento2.docker
- VIRTUAL_PORT=80
- HTTPS_METHOD=noredirect
- WITH_XDEBUG=1
networks:
magento:
aliases:
- web.magento2.docker
depends_on:
fpm:
condition: service_started
varnish:
hostname: varnish.magento2.docker
image: 'magento/magento-cloud-docker-varnish:latest-1.1'
networks:
magento:
aliases:
- magento2.docker
depends_on:
web:
condition: service_healthy
tls:
hostname: tls.magento2.docker
image: 'magento/magento-cloud-docker-tls:latest-1.1'
ports:
- '443:443'
environment:
HTTPS_UPSTREAM_SERVER_ADDRESS: varnish
networks:
magento:
aliases:
- tls.magento2.docker
depends_on:
varnish:
condition: service_started
selenium:
hostname: selenium.magento2.docker
image: 'selenium/standalone-chrome:latest'
ports:
- 4444
extends: generic
networks:
magento:
aliases:
- selenium.magento2.docker
depends_on:
web:
condition: service_started
test:
hostname: test.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:rw,delegated'
- 'magento-vendor:/app/vendor:rw,delegated'
- 'magento-generated:/app/generated:rw,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
networks:
magento:
aliases:
- test.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
fpm_xdebug:
hostname: fpm_xdebug.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
extends: generic
ports:
- '9001:9001'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
environment:
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
networks:
magento:
aliases:
- fpm_xdebug.magento2.docker
depends_on:
db:
condition: service_started
generic:
hostname: generic.magento2.docker
image: 'alpine:latest'
env_file: ./.docker/config.env
environment:
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
build:
hostname: build.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:rw,delegated'
- 'magento-vendor:/app/vendor:rw,delegated'
- 'magento-generated:/app/generated:rw,delegated'
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
networks:
magento-build:
aliases:
- build.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
deploy:
hostname: deploy.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- deploy.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
cron:
hostname: cron.magento2.docker
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
extends: generic
command: run-cron
environment:
CRONTAB: '* * * * * root cd /app && /usr/local/bin/php bin/magento cron:run >> /app/var/log/cron.log'
volumes:
- 'magento:/app:ro,delegated'
- 'magento-vendor:/app/vendor:ro,delegated'
- 'magento-generated:/app/generated:ro,delegated'
- 'magento-var:/app/var:rw,delegated'
- 'magento-app-etc:/app/app/etc:rw,delegated'
- 'magento-pub-media:/app/pub/media:rw,delegated'
- 'magento-pub-static:/app/pub/static:rw,delegated'
- 'magento-dev:/app/dev:rw,delegated'
- 'docker-mnt:/mnt:rw,delegated'
networks:
magento:
aliases:
- cron.magento2.docker
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8080:80
volumes:
- /sessions
rabbitmq:
image: rabbitmq
container_name: rabbitmq
ports:
- "5672:5672"
volumes:
magento:
driver_opts:
type: none
device: '${PWD}/'
o: bind
docker-mnt:
driver_opts:
type: none
device: '${PWD}/.docker/mnt'
o: bind
magento-vendor: { }
magento-generated: { }
magento-var: { }
magento-app-etc: { }
magento-pub-media: { }
magento-pub-static: { }
magento-dev:
driver_opts:
type: none
device: '${PWD}/dev'
o: bind
mymagento-mariadb-conf:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/mariadb.conf.d'
o: bind
mymagento-magento-db: { }
docker-entrypoint:
driver_opts:
type: none
device: '${PWD}/.docker/mysql/docker-entrypoint-initdb.d'
o: bind
networks:
magento:
driver: bridge
magento-build:
driver: bridge
MYSQL_ROOT_PASSWORD=magento2
MYSQL_DATABASE=magento2
MYSQL_USER=magento2
MYSQL_PASSWORD=magento2
VIRTUAL_HOST=magento2.docker
VIRTUAL_PORT=80
HTTPS_METHOD=noredirect
WITH_XDEBUG=1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment