self-hosted/wordpress/docker-compose.yml
Lorenzo Carbonell f5bc834350
clean
2024-05-02 09:07:49 +02:00

134 lines
3.4 KiB
YAML

services:
wordpress:
image: wordpress:fpm-alpine
container_name: ${ROUTER}-wordpress
restart: unless-stopped
init: true
depends_on:
- mariadb
- redis
volumes:
- wordpress:/var/www/html
- ./wp-content:/var/www/html/wp-content
networks:
- internal
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: |
define( 'WP_REDIS_HOST', '${WP_REDIS_HOST}' );
define( 'WP_REDIS_PORT', ${WP_REDIS_PORT} );
define( 'WP_REDIS_PREFIX', '${FQDN}' );
define( 'WP_REDIS_DATABASE', ${WP_REDIS_DATABASE} ); // 0-15
define( 'WP_REDIS_TIMEOUT', ${WP_REDIS_TIMEOUT} );
define( 'WP_REDIS_READ_TIMEOUT', ${WP_REDIS_READ_TIMEOUT} );
nginx:
image: nginx:alpine
container_name: ${ROUTER}-nginx
restart: unless-stopped
init: true
depends_on:
- wordpress
volumes:
- ./nginx:/etc/nginx/conf.d
- wordpress:/var/www/html:ro
networks:
- proxy
- internal
labels:
traefik.enable: true
traefik.http.services.${ROUTER}-nginx.loadbalancer.server.port: 80
traefik.http.routers.${ROUTER}-nginx.rule: Host(`${FQDN}`)
mariadb:
image: mariadb
container_name: ${ROUTER}-mariadb
restart: unless-stopped
init: true
volumes:
- mariadb:/var/lib/mysql
networks:
- internal
environment:
MYSQL_DATABASE: ${WORDPRESS_DB_NAME}
MYSQL_USER: ${WORDPRESS_DB_USER}
MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${WORDPRESS_DB_PASSWORD}
backup:
image: atareao/mariadb-backup:latest
container_name: ${ROUTER}-backup
restart: unless-stopped
init: true
depends_on:
- mariadb
volumes:
- ./hooks:/hooks
- backup:/cronitab/backup
networks:
- internal
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: "0 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
container_name: ${ROUTER}-redis
restart: unless-stopped
init: true
depends_on:
- mariadb
volumes:
- redis:/data
networks:
- internal
phpmyadmin:
image: phpmyadmin
container_name: ${ROUTER}-phpmyadmin
restart: unless-stopped
init: true
depends_on:
- mariadb
volumes:
- phpmyadmin:/sessions
networks:
- proxy
- internal
environment:
- PMA_ARBITRARY=1
labels:
traefik.enable: true
traefik.http.services.${ROUTER}-phpmyadmin.loadbalancer.server.port: 80
traefik.http.routers.${ROUTER}-phpmyadmin.rule: Host(`${FQDN2}`)
volumes:
wordpress:
name: ${ROUTER}-wordpress
mariadb:
name: ${ROUTER}-mariadb
backup:
name: ${ROUTER}-backup
redis:
name: ${ROUTER}-redis
phpmyadmin:
name: ${ROUTER}-phpmyadmin
networks:
internal:
name: ${ROUTER}-internal
proxy:
external: true