self-hosted/wordpress/docker-compose.yml

123 lines
3.1 KiB
YAML
Raw Normal View History

2022-06-21 19:38:37 +02:00
services:
2024-04-29 21:46:24 +02:00
wordpress:
image: wordpress:fpm-alpine
container_name: ${CONTAINER_NAME}
restart: always
init: true
depends_on:
- mariadb
- redis
environment:
WORDPRESS_DB_HOST: ${WORDPRESS_DB_HOST}
WORDPRESS_DB_USER: ${WORDPRESS_DB_USER}
WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
WORDPRESS_DB_NAME: ${WORDPRESS_DB_NAME}
WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX}
WORDPRESS_CONFIG_EXTRA: |
// adjust Redis host and port if necessary
define( 'WP_REDIS_HOST', '${WP_REDIS_HOST}' );
define( 'WP_REDIS_PORT', ${WP_REDIS_PORT} );
// change the prefix and database for each site to avoid cache data collisions
define( 'WP_REDIS_PREFIX', '${FQDN}' );
define( 'WP_REDIS_DATABASE', ${WP_REDIS_DATABASE} ); // 0-15
// reasonable connection and read+write timeouts
define( 'WP_REDIS_TIMEOUT', ${WP_REDIS_TIMEOUT} );
define( 'WP_REDIS_READ_TIMEOUT', ${WP_REDIS_READ_TIMEOUT} );
2022-06-21 19:38:37 +02:00
volumes:
2024-04-29 21:46:24 +02:00
- wordpress:/var/www/html
2022-06-21 19:38:37 +02:00
networks:
2022-06-21 20:02:21 +02:00
- internal
2022-06-21 19:38:37 +02:00
2024-04-29 21:46:24 +02:00
nginx:
image: nginx:alpine
2022-06-21 19:38:37 +02:00
volumes:
2024-04-29 21:46:24 +02:00
- ./nginx:/etc/nginx/conf.d
- wordpress:/var/www/html
depends_on:
- wordpress
restart: unless-stopped
2022-06-21 19:38:37 +02:00
networks:
- proxy
2022-06-21 20:02:21 +02:00
- internal
2024-04-29 21:46:24 +02:00
labels:
traefik.enable: true
traefik.http.services.segobriga.loadbalancer.server.port: 80
traefik.http.routers.segobriga.rule: Host(`${FQDN}`)
traefik.http.routers.segobriga.entrypoints: websecure
2022-06-21 19:38:37 +02:00
2024-04-29 21:46:24 +02:00
mariadb:
image: mariadb
restart: always
init: true
environment:
MYSQL_DATABASE: ${WORDPRESS_DB_NAME}
MYSQL_USER: ${WORDPRESS_DB_USER}
MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${WORDPRESS_DB_PASSWORD}
volumes:
- db:/var/lib/mysql
networks:
- internal
backup:
image: atareao/mariadb-backup:latest
init: true
2022-06-21 19:38:37 +02:00
restart: unless-stopped
2024-04-29 21:46:24 +02:00
networks:
- internal
2022-06-21 19:38:37 +02:00
volumes:
2024-04-29 21:46:24 +02:00
- ./hooks:/hooks
- ./backup:/backup
environment:
MARIADB_DB: ${WORDPRESS_DB_NAME}
MARIADB_HOST: ${WORDPRESS_DB_HOST}
MARIADB_PORT: 3306
MARIADB_USER: ${WORDPRESS_DB_USER}
MARIADB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
SCHEDULE: "* * 1/24 * * * *"
BACKUP_KEEP_MINS: ${BACKUP_KEEP_MINS}
BACKUP_KEEP_DAYS: ${BACKUP_KEEP_DAYS}
BACKUP_KEEP_WEEKS: ${BACKUP_KEEP_WEEKS}
BACKUP_KEEP_MONTHS: ${BACKUP_KEEP_MONTHS}
redis:
image: redis:6
restart: unless-stopped
init: true
2022-06-21 19:38:37 +02:00
depends_on:
2024-04-29 21:46:24 +02:00
- mariadb
volumes:
- redis:/data
2022-06-21 19:38:37 +02:00
networks:
2022-06-21 20:02:21 +02:00
- internal
2022-06-21 19:38:37 +02:00
2024-04-29 21:46:24 +02:00
phpmyadmin:
image: phpmyadmin
init: true
environment:
- PMA_ARBITRARY=1
2022-06-21 19:38:37 +02:00
restart: unless-stopped
volumes:
2024-04-29 21:46:24 +02:00
- sessions:/sessions
2022-06-21 19:38:37 +02:00
networks:
2024-04-29 21:46:24 +02:00
- proxy
2022-06-21 20:02:21 +02:00
- internal
2024-04-29 21:46:24 +02:00
labels:
- "traefik.enable=true"
- "traefik.http.services.${ROUTER}-myadmin.loadbalancer.server.port=80"
- "traefik.http.routers.${ROUTER}-myadmin-https.rule=Host(`${FQDN2}`)"
volumes:
wordpress: {}
db: {}
redis: {}
sessions: {}
config:
external: true
2022-06-21 19:38:37 +02:00
networks:
2024-04-29 21:46:24 +02:00
internal: {}
2022-06-21 19:38:37 +02:00
proxy:
external: true