version: '3' services: webserver: image: 'nginx:alpine' working_dir: /application volumes: - '.:/application' - './docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf' ports: - '${APP_PORT:-80}:80' networks: - challenge depends_on: - mysql - redis - php-fpm php-fpm: build: docker/php-fpm working_dir: /application volumes: - '.:/application' - './docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini' networks: - challenge depends_on: - mysql - redis mysql: image: 'mysql/mysql-server:8.0' ports: - '${FORWARD_DB_PORT:-3306}:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' MYSQL_ROOT_HOST: "%" MYSQL_DATABASE: '${DB_DATABASE}' MYSQL_USER: '${DB_USERNAME}' MYSQL_PASSWORD: '${DB_PASSWORD}' MYSQL_ALLOW_EMPTY_PASSWORD: 1 volumes: - 'challenge-mysql:/var/lib/mysql' networks: - challenge healthcheck: test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] retries: 3 timeout: 5s redis: image: 'redis:alpine' ports: - '${FORWARD_REDIS_PORT:-6379}:6379' volumes: - 'challenge-redis:/data' networks: - challenge healthcheck: test: ["CMD", "redis-cli", "ping"] retries: 3 timeout: 5s networks: challenge: driver: bridge volumes: challenge-mysql: driver: local challenge-redis: driver: local