В рое Docker мы развернули три стека, каждый из которых запускает службу базы данных на контейнерном порту 3306.
mariadb:
image: my_mariadb_image
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=false
- MYSQL_DATABASE=db_schema
- MYSQL_USER=db_user
- MYSQL_PASSWORD=db_pass
ports:
- 3306
volumes:
- mariadb:/var/lib/mysql
networks:
- cluster-global-net
- default
restart: on-failure
deploy:
labels:
traefik.docker.network: cluster-global-net
traefik.port: 3306
Traefik выбирает эти службы и предоставляет правило маршрута внешнего интерфейса:
stackName-mariadb.domain.com
Я могу подключиться к базе данных стека, используя этот маршрут, но мне нужно использовать порт (в данном случае 30004), который, кажется, назначается динамически «где-то» и сопоставляется с портом внутренней базы данных 3306.
Как я могу сказать Traefik использовать фиксированный порт, например, 3306, чтобы я мог использовать его в качестве строки подключения?
stackName-mariadb.domain.com:3306