Вот как выглядит мой docker файл
version: "3"
services:
controller:
build: ./cd_controller
image: cd_controller:latest
env_file: $PWD/robot-configurations/.env
cap_add:
- ALL
links:
- test_fixture
volumes:
- dependencypackages:/root/dependency-packages
- robotconfigurations:/root/robot-configurations
container_name: controller_g5
test_fixture:
image: docker-standard-all.ur-update.dk/ur/pytest-ur:0.7.1
volumes:
- pytestfixture:/workspace
- controllertests:/workspace/controller-tests
entrypoint: /workspace/entrypoint.sh
container_name: test_fixture
stdin_open: true # docker run -i
tty: true # docker run -t
volumes:
robotconfigurations:
driver_opts:
type: none
device: $PWD/robot-configurations
o: bind
...
В основном он имеет два контроллера служб / контейнеров и test_fixture. исходный код контроллера запущен, а test_fixture содержит все test_cases. test_fixture должен общаться с контроллером через сокет. Поскольку docker -compose создает сеть между своими контейнерами, в моих тестовых примерах py я просто использую
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("controller_g5", 30001)) # controller_g5 is name of the controller container
. Пока все выглядит нормально. Но я понял, что у меня есть несколько версий / функций исходного кода. Поэтому я хотел бы создать несколько экземпляров одного и того же объекта, каждая из которых имеет свою собственную сеть. Блокирует ли присвоение имени контейнера создание контейнера с таким же именем в другой сети? Также я не уверен, как развернуть еще одну сеть с аналогичным контейнером на той же главной машине. Я наткнулся на Несколько изолированных сред на одном хосте Но не смог получить образец примера.
Любая помощь приветствуется.