Добрый день
Стандартная конфигурация WP + БД для Docker. Использую дополнительно Traefik
Когда в параметре WORDPRESS_HOST: стоит как обычно название контейнера db то работает стабильно без Traefik когда с Traefik тогда база начинает отваливаться в случайном порядке то есть подключение то нет при обновлении страницы. Если запустить сервис БД как сделано здесь в блоке db labels и прописать IP сервиса в WORDPRESS_HOST: 172.18.0.4:3306 то работает стабильно с Traefik. Но этот IP каждый раз меняется при перезагрузке, не удобно. Кто-нибудь сталкивался с таким? Сервис БД не обязательно было по идее делать в принципе, она локальная же.
docker-compose.yml
version: "3.9"
networks:
proxynet:
external: true
services:
wordpress:
labels:
- "traefik.enable=true"
- "traefik.http.routers.reuvenveksler.rule=Host(`****.ru`)"
- "traefik.http.routers.reuvenveksler.entrypoints=http"
depends_on:
- db
build:
context: ./docker/wordpress/
dockerfile: Dockerfile
volumes:
- ./wordpress:/var/www/html
env_file:
- .env
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: dv
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX}
WORDPRESS_DEBUG: 1
WORDPRESS_CONFIG_EXTRA: |
define( 'DISABLE_WP_CRON', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true);
define( 'FS_DIRECT', true );
define( 'SCRIPT_DEBUG', true );
define( 'ALLOW_UNFILTERED_UPLOADS', true);
networks:
proxynet:
db:
image: mariadb
restart: unless-stopped
env_file:
- .env
volumes:
- persistent_db:/var/lib/mysql
- ./db:/app/db
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.mysql.rule=HostSNI(`*`)"
- "traefik.tcp.routers.mysql.entrypoints=mysql"
- "traefik.tcp.routers.mysql.service=mysql-svc"
- "traefik.tcp.services.mysql-svc.loadbalancer.server.port=3306"
networks:
proxynet:
volumes:
persistent_db:
persistent_wordpress:
Конфигурация Traefik дефолтная
services:
traefik:
image: traefik:v2.10
container_name: "traefik"
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--log.level=DEBUG"
- "--providers.docker.exposedByDefault=false"
- "--providers.docker.network=proxynet"
- "--entrypoints.http.address=:80"
- "--entrypoints.mysql.address=:3306"
ports:
- "80:80"
- "8080:8080"
- "3306:3306"
# - "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "letsencrypt:/letsencrypt"
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.*****.ru`)"
- "traefik.http.routers.traefik.service=traefik"
- "traefik.http.routers.traefik.middlewares=authtraefik"
- "traefik.http.middlewares.authtraefik.basicauth.users=devAdmin:$$2y$$05$$h9OxLeY20/5uiXjfPgdRxuFlrfqBf2QifYDgrwsR6rAEgX3/dpOGq"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
networks:
- "proxynet"