gpt4 book ai didi

Docker 撰写 : Detect whether image needs to be re-built

转载 作者:行者123 更新时间:2023-12-02 03:21:12 26 4
gpt4 key购买 nike

我正在尝试创建一个 Docker 设置(使用 docker-compose)来在开发过程中测试我的 Python 应用程序之一。 docker-compose.yml 会启动 Postgres 服务器、Redis 服务器和 PhantomJS 服务器,然后使用 pytest 运行测试。

这是我的 test.sh好像:

#!/bin/bash
UP=$(docker-compose up -d redis postgres phantomjs 2>&1)
echo $UP
if [[ $UP == *"Starting radar_postgres"* ]]; then
echo "Sleeping 10 seconds to wait for PostgreSQL server..."
sleep 10
fi
docker-compose build tests && \
docker-compose run \
--rm \
-e GOOGLE_OAUTH2_CLIENT_ID='$GOOGLE_OAUTH2_CLIENT_ID' \
-e GOOGLE_OAUTH2_CLIENT_SECRET='$GOOGLE_OAUTH2_CLIENT_SECRET' \
-e GOOGLE_DEVELOPER_TOKEN='$GOOGLE_DEVELOPER_TOKEN' \
tests $@

首先启动依赖项。由于方式 docker-compose up工作,它们会在必要时自动重建。

然后我在我的 tests 中运行一次性工作容器。我使用一次性工作而不是使用 docker-compose up因为这样我可以将参数传递给测试框架。

问题是容器总是在重建,即使 Dockerfile 没有改变,也不需要重建。 (当然每一步都使用缓存,但仍然需要 4-5 秒。)相反,如果我离开 docker-compose build行,那么当我更改 Dockerfile 时不会重建容器。

有没有办法仅在必要时重建图像?

最佳答案

请注意,有一个讨论 ( issue 1455 ) 从 docker-compose 中删除构建。

Compose's primary job is orchestration and not building, and that the Docker image is the natural place to draw that line



所以最好使用 docker build命令(应该只在必要时构建图像),而不是使用 docker-compose build (这可能有点过于激进)

关于Docker 撰写 : Detect whether image needs to be re-built,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com