version: "3.9" services: wp_db: image: mariadb:11 container_name: "${REVERSE_DOMAIN}_wp_db" environment: MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_DATABASE: "${DB_NAME}" MYSQL_USER: "${DB_USER}" MYSQL_PASSWORD: "${DB_PASSWORD}" expose: - 3306 volumes: - wp_mysql:/var/lib/mysql restart: always networks: - app_network wp_db_phpmyadmin: image: phpmyadmin/phpmyadmin container_name: "${REVERSE_DOMAIN}_db_phpmyadmin" depends_on: - wp_db environment: PMA_HOST: "${REVERSE_DOMAIN}_wp_db" PMA_PORT: 3306 MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_DATABASE: "${DB_NAME}" MYSQL_USER: "${DB_USER}" MYSQL_PASSWORD: "${DB_PASSWORD}" UPLOAD_LIMIT: 300M expose: - 80 labels: - "traefik.enable=true" - "traefik.http.routers.${REVERSE_DOMAIN}_pma.rule=Host(`pma.${APPLICATION_DOMAIN_NAME}`)" - "traefik.http.routers.${REVERSE_DOMAIN}_pma.entrypoints=websecure" - "traefik.http.routers.${REVERSE_DOMAIN}_pma.tls.certresolver=myresolver" - "traefik.http.services.${REVERSE_DOMAIN}_pma.loadbalancer.server.port=80" # VERY IMPORTANT WHEN TWO NETWORKS - "traefik.docker.network=shared_network" restart: always networks: - shared_network - app_network wp_filebrowser: image: filebrowser/filebrowser:latest container_name: "${REVERSE_DOMAIN}_filebrowser" volumes: - wp_data:/srv - filebrowser_db:/database - ./docker/filebrowser/settings.json:/config/settings.json environment: - PUID=$(id -u) - PGID=$(id -g) expose: - 80 labels: - "traefik.enable=true" - "traefik.http.routers.${REVERSE_DOMAIN}_filebrowser.rule=Host(`ftp.${APPLICATION_DOMAIN_NAME}`)" - "traefik.http.routers.${REVERSE_DOMAIN}_filebrowser.entrypoints=websecure" - "traefik.http.routers.${REVERSE_DOMAIN}_filebrowser.tls.certresolver=myresolver" - "traefik.http.services.${REVERSE_DOMAIN}_filebrowser.loadbalancer.server.port=80" - "traefik.docker.network=shared_network" restart: always networks: - shared_network - app_network wp: image: "${DOCKER_IMAGE}:${DOCKER_IMAGE_TAG}" container_name: "${REVERSE_DOMAIN}_wp" depends_on: - wp_db environment: WORDPRESS_DB_HOST: "${REVERSE_DOMAIN}_wp_db" WORDPRESS_DB_NAME: "${DB_NAME}" WORDPRESS_DB_USER: "${DB_USER}" WORDPRESS_DB_PASSWORD: "${DB_PASSWORD}" WORDPRESS_DB_CHARSET: "utf8" WORDPRESS_DB_COLLATE: "" WORDPRESS_AUTH_KEY: "${AUTH_KEY}" WORDPRESS_SECURE_AUTH_KEY: "${SECURE_AUTH_KEY}" WORDPRESS_LOGGED_IN_KEY: "${LOGGED_IN_KEY}" WORDPRESS_NONCE_KEY: "${NONCE_KEY}" WORDPRESS_AUTH_SALT: "${AUTH_SALT}" WORDPRESS_SECURE_AUTH_SALT: "${SECURE_AUTH_SALT}" WORDPRESS_LOGGED_IN_SALT: "${LOGGED_IN_SALT}" WORDPRESS_NONCE_SALT: "${NONCE_SALT}" WORDPRESS_TABLE_PREFIX: "${TABLE_PREFIX}" WORDPRESS_CONFIG_EXTRA: | $$to_bool = include __DIR__ . '/to-bool.php'; define( 'WP_DEBUG', $$to_bool('${WP_DEBUG}') ); define( 'WP_DEBUG_LOG', $$to_bool('${WP_DEBUG_LOG}') ); define( 'WP_DEBUG_DISPLAY', $$to_bool('${WP_DEBUG_DISPLAY}') ); define( 'DISABLE_WP_CRON', $$to_bool('${DISABLE_WP_CRON}') ); expose: - 80 labels: - "traefik.enable=true" - "traefik.http.routers.${REVERSE_DOMAIN}.rule=Host(`${APPLICATION_DOMAIN_NAME}`)" - "traefik.http.routers.${REVERSE_DOMAIN}.entrypoints=websecure" - "traefik.http.routers.${REVERSE_DOMAIN}.tls.certresolver=myresolver" - "traefik.http.services.${REVERSE_DOMAIN}.loadbalancer.server.port=80" - "traefik.docker.network=shared_network" volumes: # only user data persists - wp_content:/var/www/html/wp-content restart: always networks: - shared_network - app_network wp_cron: image: registry.sn48.zivili.ch/meow/wp-cron:amd64-1.0.0 container_name: "${REVERSE_DOMAIN}_wp_cron" depends_on: - wp networks: - app_network networks: shared_network: name: shared_network external: true app_network: name: ${REVERSE_DOMAIN}-app_network volumes: wp_mysql: name: "${REVERSE_DOMAIN}_wp_db-volume" external: true wp_content: name: "${REVERSE_DOMAIN}_wp-data" external: true filebrowser_db: name: "${REVERSE_DOMAIN}_filebrowser_db" external: true