强制docker-compose push / pull

时间:2018-12-11 10:36:00

标签: docker jenkins docker-compose

我有一个詹金斯工作,可以构建我的所有Docker映像并将其推送到我的Docker Hub。然后将它SSH到要部署的服务器上,并运行docker-compose pull && docker-compose up。

由于某种原因,此机制无法很好地处理docker中的更改。我在其中一张图像中更改了我的要求之一。我在詹金斯(Jenkins)中看到它已识别出更改,并且在该阶段未使用缓存:

Step 16/33 : RUN ldconfig
 ---> Using cache
 ---> 15284e3997f6
Step 17/33 : ADD requirements.txt requirements.txt
 ---> 1c2d81548e55
Step 18/33 : RUN pip install -r requirements.txt
 ---> Running in 679034a149d4
Collecting alembic==0.9.5 (from -r requirements.txt (line 1))

在这里您可以看到步骤16仍在使用高速缓存,而步骤17未在使用高速缓存。哪个按预期工作。

然后我推送图像:

-------------
Publishing Images
-------------

    Pushing base (<docker-hub-server>/base:latest)...
    The push refers to repository [<docker-hub-server>/base].

之后,我将ssh转到服务器并拉出图像。

问题是由于某种原因,具有更新后的依赖关系的新映像由于某种原因未推送。

我尝试删除jenkins服务器和目标服务器中的所有容器和图像。

感觉好像某些东西被错误地缓存了。

我正在寻找一种解决方案,该解决方案将强制将该图像推入存储库或类似的东西。

编辑:

更多信息:

The push refers to repository [<docker-hub-server>/base]
9430005e84f9: Preparing
48e6dda22a29: Preparing
972483a80c7c: Preparing
a534cbaa9205: Preparing
23b2691ba244: Preparing
0f29e137999a: Layer already exists
b154080f7784: Layer already exists
0c7778ab05f8: Layer already exists
b2a1e0120631: Layer already exists
a597ec0005e2: Layer already exists
a5dc291ad4b4: Layer already exists
c54dfcd94152: Layer already exists
3415f7db917e: Layer already exists
0c01967aaa96: Layer already exists
7f969e99b7b3: Layer already exists
45652f92e451: Layer already exists
4acd815bd647: Layer already exists
72a531f31293: Layer already exists
b9624af892c1: Layer already exists
3c0dc8487715: Layer already exists
d54136b410c5: Layer already exists
cc349f2a25e3: Layer already exists
b8b4502cfe14: Layer already exists
a2bc3f3bafb5: Layer already exists
db067458dfa6: Layer already exists
ccec44bf5310: Layer already exists
a1ae7010d9f9: Layer already exists
03a6b6877a9b: Layer already exists
ef68f6734aa4: Layer already exists

签入詹金斯后,正确的图像在那里,但是当我按下它时仍然说,即使更改了步骤16、17,所有层都已经存在。

1 个答案:

答案 0 :(得分:0)

在构建docker映像时使用--no-cache选项,并检查是否可以解决问题