Bonjour à tous,
J'utilise le couple Docker / Traefik pour proposer des services sur notre réseau interne. J'ai mis en place la gestion des points d'entrées web (80) et webs (443) facilement, mais je bloque pour proposer mysql/mariadb.
Par exemple avec ce docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| version: '3.5'
services:
sv_mysql:
image: mysql:latest
container_name: sv_mysql
command: --default-authentication-plugin=mysql_native_password --secure-file-priv=/tmp
environment:
MYSQL_ROOT_PASSWORD: xxxx
security_opt:
- seccomp:unconfined
volumes:
- "/sql/portail/dev:/var/lib/mysql"
- "./conf.d:/etc/mysql/mysql.conf.d"
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.sv_mysql.rule=HostSNI(`*`)"
- "traefik.tcp.routers.sv_mysql.entrypoints=mysql"
- "traefik.tcp.services.sv_mysql.loadBalancer.server.port=3306"
- "backuppc.active=true"
- "backuppc.services=mysql,"
hostname: sv_mysql.mon.domain
networks:
- backend
- traefik
sv_pma:
image: phpmyadmin/phpmyadmin:latest
container_name: sv_pma
depends_on:
- sv_mysql
environment:
MYSQL_ROOT_PASSWORD: sv
PMA_USER: root
PMA_PASSWORD: sv
PMA_HOST: sv_mysql
UPLOAD_LIMIT: 16384M
labels:
- "traefik.enable=true"
- "traefik.http.routers.sv_pma.entrypoints=web"
- "traefik.http.routers.sv_pma.rule=Host(`sv-pma.mon.domain`)"
networks:
- backend
- traefik
# use a Dockerfile
sv_www:
depends_on:
- sv_mysql
build: .
container_name: sv_www
volumes:
- "/www/dev/extranet/html:/var/www/html"
labels:
- "traefik.enable=true"
- "traefik.http.routers.sv_www.entrypoints=web"
- "traefik.http.routers.sv_www.rule=Host(`sv.mon.domain`)"
- "backuppc.active=true"
- "backuppc.services=volume,"
- "backuppc.volume.path=/var/www/html"
networks:
- backend
- traefik
networks:
backend:
name: sv_backend
traefik:
external: true |
J'arrive à accéder avec Firefox av sv.mon.domain et sv-pm.mon.domain. J'essai depuis mon pc d'atteindre avec le client mysql sv_mysql avec :
mysql -H sv_mysql.mon.domain -u xxxx -p
Mais rien à faire, après la demande de mot de passe je reste bloqué jusqu'au timeout.
config de Traefik
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| global:
sendAnonymousUsage: false
checkNewVersion: false
api:
insecure: true
dashboard: true
debug: true
log:
filePath: "/var/log/traefik/applog.log"
format: json
level: INFO
accessLog:
filePath: "/var/log/traefik/access.log"
providers:
docker:
endpoint: unix:///var/run/docker.sock
exposedByDefault: false
network: traefik
file:
directory: /etc/traefik/dynamic
watch: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
mysql:
address: ":3306/tcp"
certificatesResolvers:
le:
acme:
email: contact@xxxxxxx
caServer: https://acme-v02.api.letsencrypt.org/directory
storage: /letsencrypt/acme.json
dnsChallenge:
provider: ovh
delayBeforecheck: 5
resolvers:
- 8.8.8.8
- 8.8.4.4 |
Je n'arrive pas à trouver de doc qui explique comment faire fonctionner correctement le SNI car l'idée est de pouvoir proposer autant de container mysql/mariadb que besoin avec une connexion possible hors réseau Traefik, du coup exit la configuration par mappage de port.
Avez-vous une idée ?
Merci d'avance.
Partager