Nhật ký công việc cho nhiệm vụ "Khắc phục định tuyến mạng của dự án con thông qua Traefik"

27 сент. 2026 г., 04:09:58

2026-09-27 — Chuyển tiếp lưu lượng truy cập trong DinD qua Traefik

Đã kiểm tra và hoàn thiện việc định tuyến đến dự án con được chạy thông qua Docker Compose bên trong DinD.

Kết quả

Chuỗi hoạt động: Traefik bên ngoài → DinD:2015 → socat → Traefik bên trong:80 → app:3000. Dự án nextjs-test đã truy cập thành công qua http://nextjs-test.localhost:2015/.

socat và bash đã được thêm vào Dockerfile của dự án con, đồng thời Traefik bên ngoài được cấu hình trỏ tới cổng 2015 của container DinD. Sau khi khởi động Compose, socat sẽ chuyển tiếp cổng này sang Traefik bên trong.

Quản lý mạng Docker

Ban đầu, việc kết nối DinD với docker_default được thêm trực tiếp vào buildAndRunProject, nhưng đã quyết định không giữ lại phần cứng mã hóa (hardcode) này. Mạng cần được quản lý một cách minh bạch thông qua API.

Đã thêm:

  • Kiểu DockerContainerNetwork (name, networkID, ipAddress, gateway, macAddress);
  • Trường lười (lazy field) DockerContainer.networks;
  • Hàm hỗ trợ mapContainerNetworks;
  • Query containerNetworks;
  • Mutation connectContainerToNetwork;
  • Mutation disconnectContainerFromNetwork.

Giờ đây, container có thể được kết nối lập trình với mạng của Traefik bên ngoài và ngắt kết nối khỏi mạng đó mà không cần dùng Docker CLI.

Điểm lưu ý phát hiện được

Nếu kết nối container với mạng sau khi tuyến đường (route) đã tồn tại, Traefik bên ngoài có thể tiếp tục sử dụng điểm cuối (endpoint) cũ. Trong bài kiểm tra thực tế, cần phải khởi động lại (restart) Traefik. Điều này cần được tính đến trong vòng đời khởi chạy và định tuyến dự án trong tương lai.

26.09.2026

Tự động kết nối dự án đang chạy với mạng Traefik chung mà không cần thao tác Docker thủ công.