version: '3.4' services: php: build: context: . target: sylius_php cache_from: - quay.io/sylius/php:latest - quay.io/sylius/nodejs:latest - quay.io/sylius/nginx:latest image: quay.io/sylius/php:latest depends_on: - mysql environment: - APP_ENV=dev - APP_DEBUG=1 - APP_SECRET=EDITME - DATABASE_URL=mysql://sylius:nopassword@mysql/sylius - MAILER_URL=smtp://localhost - PHP_DATE_TIMEZONE=${PHP_DATE_TIMEZONE:-UTC} volumes: - .:/srv/sylius:rw,cached # if you develop on Linux, you may use a bind-mounted host directory instead # - ./var:/srv/sylius/var:rw - ./public:/srv/sylius/public:rw,delegated # if you develop on Linux, you may use a bind-mounted host directory instead # - ./public/media:/srv/sylius/public/media:rw - public-media:/srv/sylius/public/media:rw mysql: image: percona:5.7 environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-nopassword} - MYSQL_DATABASE=sylius - MYSQL_USER=sylius - MYSQL_PASSWORD=${MYSQL_PASSWORD:-nopassword} volumes: - mysql-data:/var/lib/mysql:rw # you may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data! # - ./docker/mysql/data:/var/lib/mysql:rw,delegated ports: - "3306:3306" nodejs: build: context: . target: sylius_nodejs cache_from: - quay.io/sylius/php:latest - quay.io/sylius/nodejs:latest - quay.io/sylius/nginx:latest image: quay.io/sylius/nodejs:latest depends_on: - php environment: - GULP_ENV=dev - PHP_HOST=php - PHP_PORT=9000 volumes: - .:/srv/sylius:rw,cached - ./public:/srv/sylius/public:rw,delegated ports: - "35729:35729" nginx: build: context: . target: sylius_nginx cache_from: - quay.io/sylius/php:latest - quay.io/sylius/nodejs:latest - quay.io/sylius/nginx:latest image: quay.io/sylius/nginx:latest depends_on: - php - nodejs # to ensure correct build order volumes: - ./public:/srv/sylius/public:ro # if you develop on Linux, you may use a bind-mounted host directory instead # - ./public/media:/srv/sylius/public/media:ro - public-media:/srv/sylius/public/media:ro,nocopy ports: - "80:80" mailhog: # do not use in production! image: mailhog/mailhog:latest environment: - MH_STORAGE=maildir volumes: - ./docker/mailhog/maildir:/maildir:rw,delegated ports: - "8025:8025" volumes: mysql-data: public-media: