You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.6 KiB
YAML

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_content:/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
- ./docker/wordpress/php.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
- ./docker/wordpress/public_dir/to-bool.php:/var/www/html/to-bool.php:ro
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