Возможно ли сделать автообновление локальных 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 шт):

Автор решения: Roman-Stop RU aggression in UA

Вам нужна опция withPull:

private val environment: KDockerComposeContainer =
        KDockerComposeContainer(ResourceUtils.getResourceAsFile("/docker/docker-compose.yml"))
            .withLocalCompose(true)
            .withPull(true)
            ...
            ...

Когда она установлена, testcontainers выполнит docker-compose pull, который в свою очередь сделает docker pull для задействованных образов. Эта команда обновит измененные образы перед запуском.

→ Ссылка