version: '3.8' x-defaults: &defaults restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "3" services: db: <<: *defaults image: mysql:5.7.42 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 networks: - wordpress_network wordpress_app: <<: *defaults image: wordpress:6.2.2-php8.1-apache depends_on: db: condition: service_healthy ports: - "8080:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: ${MYSQL_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_CONFIG_EXTRA: | define('WP_HOME','http://localhost:8080'); define('WP_SITEURL','http://localhost:8080'); volumes: - wordpress_data:/var/www/html healthcheck: test: ["CMD-SHELL", "curl -f http://localhost || exit 1"] interval: 30s timeout: 10s retries: 3 networks: - wordpress_network networks: wordpress_network: driver: bridge volumes: db_data: wordpress_data: