Возможно ли сделать автообновление локальных Docker образов в TestContainers, используя класс DockerComposeContainer?
В docker-compose файле у меня несколько разных сервисов, все они со статичным тэгом "latest" (например: "some_image1:latest", "some_image2:latest", ну и так далее). Перед прогоном автотестов я хочу проверять образы на наличие изменений и, если изменения есть, обновлять только измененные образы. Я пока не понял как это сделать, потому сейчас перед каждым запуском я просто удаляю все локальные образы и заново подкачиваю все, не делая какие-нибудь предварительные проверки. Выглядит это примерно так:
object TestEnvironment {
fun start() {
environment.stop()
environment.start()
}
private val environment: KDockerComposeContainer =
KDockerComposeContainer(ResourceUtils.getResourceAsFile("/docker/docker-compose.yml"))
.withLocalCompose(true)
.withRemoveImages(DockerComposeContainer.RemoveImages.ALL)
...
...
}
Строка .withRemoveImages(DockerComposeContainer.RemoveImages.ALL) удаляет все локальные образы.
Ответы (1 шт):
Вам нужна опция withPull:
private val environment: KDockerComposeContainer =
KDockerComposeContainer(ResourceUtils.getResourceAsFile("/docker/docker-compose.yml"))
.withLocalCompose(true)
.withPull(true)
...
...
Когда она установлена, testcontainers выполнит docker-compose pull, который в свою очередь сделает docker pull для задействованных образов. Эта команда обновит измененные образы перед запуском.