wordpress-docker-compose/docker-compose.yaml
2026-03-09 08:19:04 +01:00

187 lines
4.9 KiB
YAML

name: wp-gmo
services:
wordpress:
image: wordpress:latest
extra_hosts:
- "${HOST_NAME}:${HOST_IP}"
container_name: ${WP_SITE}
restart: always
volumes:
- /home/docker/wp/wp-site:/var/www/html
- ./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_TABLE_PREFIX: wp_
depends_on:
db:
condition: service_healthy
networks:
- traefik-net
- wp-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.wp-site.rule=Host(`${HOST_NAME}`)"
- "traefik.http.routers.wp-site.entrypoints=websecure"
- "traefik.http.routers.wp-site.tls=true"
- "traefik.docker.network=traefik-net"
- "traefik.http.services.wp-site.loadbalancer.server.port=80"
# Facultatif mais propre : forcer l'usage du cert SSL défini dans le fichier dynamique
- "traefik.http.routers.wp-pma.tls.options=default"
db:
image: mysql:8.4
container_name: ${WP_DB}
restart: always
volumes:
- /home/docker/wp/wp-db:/var/lib/mysql
# This is optional!!!
- ./dump-db/:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
MYSQL_ROOT_PASSWORD: rootpassword
networks:
- wp-net
healthcheck:
test: ["CMD","mysqladmin","ping","-h","localhost","-prootpassword"]
interval: 10s
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin:latest
container_name: ${WP_PMA}
restart: always
depends_on:
- db
environment:
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: rootpassword
# ports:
# - 8180:80
networks:
- traefik-net
- wp-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.wp-pma.rule=Host(`${HOST_PMA}`)"
- "traefik.http.routers.wp-pma.entrypoints=websecure"
- "traefik.http.routers.wp-pma.tls=true"
- "traefik.docker.network=traefik-net"
- "traefik.http.services.wp-pma.loadbalancer.server.port=80"
# Facultatif mais propre : forcer l'usage du cert SSL défini dans le fichier dynamique
- "traefik.http.routers.wp-pma.tls.options=default"
networks:
traefik-net:
external: true
wp-net:
#name: wp-gmo
#services:
# wordpress:
# image: wordpress:latest
# extra_hosts:
# - "${HOST_NAME}:${HOST_IP}"
# container_name: ${WP_SITE}
# volumes:
# - /home/docker/wp/wp-site:/var/www/html
# - ./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
# environment:
# WORDPRESS_DB_HOST: db
# WORDPRESS_DB_NAME: wordpress
# WORDPRESS_DB_USER: wpuser
# WORDPRESS_DB_PASSWORD: wppassword
# WORDPRESS_TABLE_PREFIX: wp_
# depends_on:
# - db
# - phpmyadmin
# restart: always
# ports:
# - 8080:80
# networks:
# - traefik-net
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.wp-site.rule=Host(`${HOST_NAME}`)"
# - "traefik.docker.network=traefik-net"
# - "traefik.http.routers.wp-site.entrypoints=websecure"
# - "traefik.http.routers.wp-site.tls=true"
## # Facultatif mais propre : forcer l'usage du cert SSL défini dans le fichier dynamique
# - "traefik.http.routers.wp-site.tls.options=default"
# - "traefik.http.services.wp-site.loadbalancer.server.port=80"
#
# db:
# image: mysql:8.4.8
# container_name: ${WP_DB}
# volumes:
# - /home/docker/wp/wp-db:/var/lib/mysql
# # This is optional!!!
# - ./dump-db/:/docker-entrypoint-initdb.d
# environment:
# MYSQL_DATABASE: wordpress
# MYSQL_USER: wpuser
# MYSQL_PASSWORD: wppassword
# MYSQL_ROOT_PASSWORD: rootpassword
# restart: always
# ports:
# - 3306:3306
#
# healthcheck:
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
# timeout: 5s
# retries: 10
#
# phpmyadmin:
# depends_on:
# - db
# image: ${PHPADMIN_IMAGE}
# container_name: wp-phpmyadmin
# restart: always
# ports:
# - 8180:80
# environment:
# PMA_HOST: db
# PMA_USER: root
# PMA_PASSWORD: rootpassword
# networks:
# - traefik-net
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.wp-phpmyadm.rule=Host(`${HOST_PHPMYADM}`)"
# - "traefik.docker.network=traefik-net"
# - "traefik.http.routers.wp-phpmyadm.entrypoints=websecure"
# - "traefik.http.routers.wp-phpmyadm.tls=true"
## # Facultatif mais propre : forcer l'usage du cert SSL défini dans le fichier dynamique
# - "traefik.http.routers.wp-phpmyadm.tls.options=default"
# - "traefik.http.services.wp-phpmyadm.loadbalancer.server.port=80"
#
#networks:
# traefik-net:
# external: true
# wp-net:
##volumes:
## db_data: