Replace direct port binding with Traefik labels to enable automatic HTTPS routing and certificate management. Add domain configuration variables to support dynamic routing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
55 lines
1.6 KiB
YAML
55 lines
1.6 KiB
YAML
services:
|
|
wordpress:
|
|
image: wordpress:latest
|
|
restart: always
|
|
expose:
|
|
- 80
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_USER: ${MYSQL_USER}
|
|
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
|
|
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
|
|
volumes:
|
|
- wordpress:/var/www/html
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.rule=Host(`${DOMAIN}`)"
|
|
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.entrypoints=websecure"
|
|
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.tls=true"
|
|
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.${COMPOSE_PROJECT_NAME}.loadbalancer.server.port=80"
|
|
networks:
|
|
- walter-coiffure-net
|
|
- traefik
|
|
db:
|
|
image: mariadb:latest
|
|
restart: always
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
|
- MYSQL_USER=${MYSQL_USER}
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
volumes:
|
|
- ./db:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
networks:
|
|
- walter-coiffure-net
|
|
redis:
|
|
image: redis:alpine
|
|
restart: unless-stopped
|
|
command: redis-server --requirepass ${REDIS_HOST_PASSWORD} --maxmemory 512mb --maxmemory-policy allkeys-lru
|
|
networks:
|
|
- walter-coiffure-net
|
|
networks:
|
|
walter-coiffure-net:
|
|
driver: bridge
|
|
traefik:
|
|
external: true
|
|
volumes:
|
|
wordpress:
|
|
db:
|