#java #testcontainers
#java #тестовые контейнеры
Вопрос:
Я хочу создать сеть через docker-compose (через DockerComposeContainer) и подключить другой контейнер (созданный с помощью ImageFromDockerfile) к той же сети. Возможно ли это?
Вопрос в другом: может ли ImageFromDockerfile присоединиться к существующей сети? (Для меня порядок имеет решающее значение, потому что, когда я запускаю свой образ, он должен подключаться ко всем службам, работающим через compose)
Движущиеся части, которые я пробовал, включают:
- Файл docker compose
version: '3.6'
services:
vault:
image: docker.x.com/x/vault:123-ytr
ports:
- 8200:8200
networks:
- gateway
environment:
- APP_NAME=requestlogidentityconsumer
networks:
gateway:
name: damo
-
Выполнение вышеуказанного файла compose через DockerComposeContainer (вкл. создайте сеть damo)
-
Попытайтесь создать и запустить rlic-контейнер и присоединить его к damo n / w
Network network =
Network.builder().createNetworkCmdModifier(cmd -> cmd.withName("damo")).build();
new GenericContainer(
new ImageFromDockerfile("rlic-container", true)
.withFileFromFile("Dockerfile", DOCKER_FILE_PATH.toFile()))
.withNetwork(network)
.start();
Когда я запускаю шаг 3, я получаю:
Caused by: com.github.dockerjava.api.exception.ConflictException: {"message":"network with name damo already exists"}
Что имеет смысл (поскольку сеть существует с шага 2) и связано с моим вопросом; могу ли я написать шаг 3 таким образом, чтобы он присоединялся к существующей сети?
Спасибо
Комментарии:
1. в качестве обходного пути я могу создать одноразовый тестовый контейнер и заставить его создать сеть (damo) в качестве шага 1, а затем изменить docker-compose для присоединения к этому внешнему (damo) n / w. Это, конечно, позволяет любому дальнейшему тестовому контейнеру присоединиться к этой сети
2. Я смог обойти эту проблему, предоставив порт из docker-compose, а затем используя
Testcontainers.exposeHostPorts(8200);
и затем получая к нему доступ из testcontainer сhttp://host.testcontainers.internal:8200
подробностями об этом подходе здесь: testcontainers.org/features/networking3. Почему на ваш новый образ нет ссылки в файле компоновки, который вы запускаете, затем сначала создаете образ, а затем запускаете файл компоновки с использованием этого образа?