Ворклог по задаче "Исправить сетевую маршрутизацию дочерних проектов через Traefik"
2026-09-27 — Проксирование трафика в DinD через Traefik
Проверена и доведена до рабочего состояния маршрутизация к дочернему проекту, запущенному через Docker Compose внутри DinD.
Результат
Рабочая цепочка: внешний Traefik → DinD:2015 → socat → внутренний Traefik:80 → app:3000. Проект nextjs-test успешно доступен по http://nextjs-test.localhost:2015/.
В Dockerfile дочернего проекта добавлены socat и bash, а внешний Traefik настроен на порт 2015 DinD-контейнера. socat после запуска Compose пробрасывает этот порт на внутренний Traefik.
Управление Docker-сетями
Первоначально подключение DinD к docker_default было добавлено непосредственно в buildAndRunProject, но принято решение не оставлять этот хардкод. Сеть должна управляться явно через API.
Добавлены:
- тип
DockerContainerNetwork(name,networkID,ipAddress,gateway,macAddress); - ленивое поле
DockerContainer.networks; - helper
mapContainerNetworks; - query
containerNetworks; - mutation
connectContainerToNetwork; - mutation
disconnectContainerFromNetwork.
Теперь контейнер можно программно подключать к сети внешнего Traefik и отключать от неё без Docker CLI.
Выявленный нюанс
Если контейнер подключить к сети уже после появления маршрута, внешний Traefik может продолжить использовать старый endpoint. В проведённом тесте понадобился restart Traefik. Это следует учесть при дальнейшем lifecycle запуска и маршрутизации проектов.
Исправить сетевую маршрутизацию дочерних проектов через Traefik.