version: '3.8' networks: default: name: "${PROJECT_NAME}_wordpress_db_net" external: false be: name: "${PROJECT_NAME}_wordpress_net" external: false traefik: name: "${TRAEFIK_NETWORK}" external: true services: webserver: image: "nginx:alpine" depends_on: - "wordpress" container_name: "${PROJECT_NAME}_wordpress_web" hostname: "${PROJECT_URL}" restart: "unless-stopped" volumes: - "wordpress:/var/www/html" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/plugins:/var/www/html/wp-content/plugins" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/themes:/var/www/html/wp-content/themes" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/uploads:/var/www/html/wp-content/uploads" - "./nginx-conf:/etc/nginx/conf.d" - "./php-conf:/usr/local/etc/php" networks: - "traefik" - "be" labels: # Watchtower add to auto update - "com.centurylinklabs.watchtower.enable=true" # traefik - "traefik.enable=true" - "traefik.docker.network=${TRAEFIK_NETWORK}" - "traefik.http.services.${PROJECT_NAME}_wordpress.loadbalancer.server.port=80" - "traefik.http.routers.${PROJECT_NAME}_wordpress.rule=Host(`${PROJECT_URL}`)" - "traefik.http.routers.${PROJECT_NAME}_wordpress.entrypoints=websecure" - "traefik.http.routers.${PROJECT_NAME}_wordpress.tls=true" - "traefik.frontend.rule=Host:${PROJECT_URL}" - "traefik.frontend.certFile=/certs/wordpress.localhost.crt" - "traefik.frontend.keyFile=/certs/wordpress.localhost.key" wordpress: image: "wordpress:fpm-alpine" depends_on: - "db" container_name: "${PROJECT_NAME}_wordpress_fpm" restart: "unless-stopped" volumes: - "wordpress:/var/www/html" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/plugins:/var/www/html/wp-content/plugins" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/themes:/var/www/html/wp-content/themes" - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/wordpress/uploads:/var/www/html/wp-content/uploads" - "./php-conf/php.ini:/usr/local/etc/php/php.ini:ro" env_file: ".env" user: "1000" environment: - "WORDPRESS_DB_HOST=db" - "WORDPRESS_DB_USER=${MYSQL_USER}" - "WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}" - "WORDPRESS_DB_NAME=${MYSQL_DATABASE}" networks: - "default" - "be" labels: # Watchtower add to auto update - "com.centurylinklabs.watchtower.enable=false" # traefik - "traefik.enable=false" db: image: "mariadb:latest" container_name: "${PROJECT_NAME}_wordpress_db" restart: "unless-stopped" command: '--default-authentication-plugin=mysql_native_password' env_file: ".env" volumes: - "${PROJECT_DATA}/${PROJECT_NAME}-wordpress/db:/var/lib/mysql" labels: # Watchtower add to auto update - "com.centurylinklabs.watchtower.enable=true" # traefik - "traefik.enable=false" volumes: wordpress: name: "${PROJECT_NAME}_wordpress"