self-hosted/wordpress/docker-compose.yml

134 lines
3.4 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
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-wordpress
restart: unless-stopped
2024-04-29 21:46:24 +02:00
init: true
depends_on:
- mariadb
- redis
2024-05-02 09:07:49 +02:00
volumes:
- wordpress:/var/www/html
- ./wp-content:/var/www/html/wp-content
networks:
- internal
2024-04-29 21:46:24 +02:00
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} );
2022-06-21 19:38:37 +02:00
2024-04-29 21:46:24 +02:00
nginx:
image: nginx:alpine
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-nginx
restart: unless-stopped
init: true
2024-04-29 21:46:24 +02:00
depends_on:
- wordpress
2024-05-02 09:07:49 +02:00
volumes:
- ./nginx:/etc/nginx/conf.d
- wordpress:/var/www/html:ro
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
2024-05-02 09:07:49 +02:00
traefik.http.services.${ROUTER}-nginx.loadbalancer.server.port: 80
traefik.http.routers.${ROUTER}-nginx.rule: Host(`${FQDN}`)
2022-06-21 19:38:37 +02:00
2024-04-29 21:46:24 +02:00
mariadb:
image: mariadb
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-mariadb
restart: unless-stopped
2024-04-29 21:46:24 +02:00
init: true
2024-05-02 09:07:49 +02:00
volumes:
- mariadb:/var/lib/mysql
networks:
- internal
2024-04-29 21:46:24 +02:00
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
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-backup
2022-06-21 19:38:37 +02:00
restart: unless-stopped
2024-05-02 09:07:49 +02:00
init: true
depends_on:
- mariadb
2022-06-21 19:38:37 +02:00
volumes:
2024-04-29 21:46:24 +02:00
- ./hooks:/hooks
2024-05-02 09:07:49 +02:00
- backup:/cronitab/backup
networks:
- internal
2024-04-29 21:46:24 +02:00
environment:
MARIADB_DB: ${WORDPRESS_DB_NAME}
MARIADB_HOST: ${WORDPRESS_DB_HOST}
MARIADB_PORT: 3306
MARIADB_USER: ${WORDPRESS_DB_USER}
MARIADB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
2024-05-02 09:07:49 +02:00
SCHEDULE: "0 1/24 * * *"
2024-04-29 21:46:24 +02:00
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
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-redis
2024-04-29 21:46:24 +02:00
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
2024-05-02 09:07:49 +02:00
container_name: ${ROUTER}-phpmyadmin
2022-06-21 19:38:37 +02:00
restart: unless-stopped
2024-05-02 09:07:49 +02:00
init: true
depends_on:
- mariadb
2022-06-21 19:38:37 +02:00
volumes:
2024-05-02 09:07:49 +02:00
- phpmyadmin:/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-05-02 09:07:49 +02:00
environment:
- PMA_ARBITRARY=1
2024-04-29 21:46:24 +02:00
labels:
2024-05-02 09:07:49 +02:00
traefik.enable: true
traefik.http.services.${ROUTER}-phpmyadmin.loadbalancer.server.port: 80
traefik.http.routers.${ROUTER}-phpmyadmin.rule: Host(`${FQDN2}`)
2024-04-29 21:46:24 +02:00
volumes:
2024-05-02 09:07:49 +02:00
wordpress:
name: ${ROUTER}-wordpress
mariadb:
name: ${ROUTER}-mariadb
backup:
name: ${ROUTER}-backup
redis:
name: ${ROUTER}-redis
phpmyadmin:
name: ${ROUTER}-phpmyadmin
2022-06-21 19:38:37 +02:00
networks:
2024-05-02 09:07:49 +02:00
internal:
name: ${ROUTER}-internal
2022-06-21 19:38:37 +02:00
proxy:
external: true