version: '3.7' services: ## # The web server container. ## wordpress-develop: image: nginx:alpine networks: - wpdevnet ports: - ${LOCAL_PORT-8889}:80 environment: LOCAL_DIR: ${LOCAL_DIR-src} volumes: - ./default.template:/etc/nginx/conf.d/default.template - ../../:/var/www # Load our config file, substituning environment variables into the config. command: /bin/sh -c "envsubst '$$LOCAL_DIR' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" depends_on: - php ## # The PHP container. ## php: image: wordpressdevelop/php:${LOCAL_PHP-latest} networks: - wpdevnet environment: LOCAL_PHP_XDEBUG: ${LOCAL_PHP_XDEBUG-false} volumes: - ./php-config.ini:/usr/local/etc/php/conf.d/php-config.ini - ../../:/var/www depends_on: - mysql ## # The MySQL container. ## mysql: image: mysql:${LOCAL_MYSQL-latest} networks: - wpdevnet environment: MYSQL_ROOT_PASSWORD: password volumes: - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql - mysql:/var/lib/mysql # For compatibility with PHP versions that don't support the caching_sha2_password auth plugin used in MySQL 8.0. command: --default-authentication-plugin=mysql_native_password volumes: # So that sites aren't wiped every time containers are restarted, MySQL uses a persistent volume. mysql: {} networks: # Creating our own network allows us to connect between containers using their service name. wpdevnet: driver: bridge