在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