Вам нужна сеть, в которой они оба развернуты, но которую никто не видит.
Чтобы сделать это, создайте сеть, добавьте ее в свою службу db и веб-интерфейс, а также во временную службу.И действительно, удалите метку traefik на БД, потому что они здесь больше не нужны.
EG:
...
networks:
default: {}
cluster-global-net:
external: true
db-net:
external: true
services:
frontend:
image: frontend_image
networks:
- cluster-global-net
- default
- db-net
deploy:
...
db:
image: db_image
...
networks:
- default
- db-net
restart: on-failure
#no labels
docker network create db-net
docker stack deploy -c <mycompose.yml> <myfront>
docker service create --network db-net <myTemporaryImage> <temporaryService>
Затем временная служба кактакже, как внешний интерфейс может достичь базы данных через db: 3306
Кстати: вам не нужно открывать порт для внешнего интерфейса, так как traefik получит к нему внутренний доступ (trafik.port),
РЕДАКТИРОВАТЬ : новый пример с сетью, созданной из файла компоновки.
...
networks:
default: {}
cluster-global-net:
external: true
db-net: {}
services:
frontend:
image: frontend_image
networks:
- cluster-global-net
- default
- db-net
deploy:
...
db:
image: db_image
...
networks:
- default
- db-net
restart: on-failure
#no labels
docker stack deploy -c <mycompose.yml> someStackName
docker service create --network someStackName_db-net <myTemporaryImage> <temporaryService>