Возможно ли как-то запускать только определенные службы в Testcontainers DockerComposeContainer?
Используя пример из официальная документация, можем ли мы запустить только Redis? Для меня все службы запускаются постоянно (и неважно, использовал ли я метод withExposedService или нет).
Я имею в виду такой метод:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.composeUpService("redis_1")




Из исходного кода DockerComposeContainer кажется, что ответ отрицательный, но только потому, что DockerComposeContainer.runWithCompose является частным.
Из-за использования этого метода в других местах, таких как DockerComposeContainer.createServices, кажется, что все, что потребуется, - это открыть runWithCompose, и у вас может быть полный набор команд docker-compose, позволяющий что-то вроде:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.runWithCompose("run -d redis");
(и другие Опции docker-compose run).
Это довольно активный проект на github, так что вы можете получить в нем поддержку, отправив сообщение о проблеме или, еще лучше, запрос на перенос.
Возможность запуска подмножества серверов была добавлена в Testcontainers 1.11.4 посредством добавления метода withServices(String... services) (# 1497). Однако эта функция была случайно нарушена в 1.12.4 и все еще не работает в последней версии 1.13.0 (# 2191).
Таким образом, в работающей версии библиотеки вы можете выполнить следующие действия, чтобы запустить только одну службу Redis:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.withServices("redis_1")
В качестве обходного пути вы можете создать отдельный файл для создания докеров, в котором есть только одна услуга, которую вы хотите.