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
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
|