Docker始终强制使用缓存的图像

时间:2018-11-08 10:25:10

标签: docker docker-compose

我正在使用docker compose使用docker构建我的应用程序。

docker-compose的版本为2.2

在其中一个容器正在运行nginx的那一刻,我的所有容器都运行良好。

我需要在此容器上更改一些配置。

由于特殊情况,我需要做的是更新容器内的配置。

然后我提交容器以构建新图像。

docker commit <container> <image-name>

现在我有了带有最新标签的新图像。

我想要的是在运行时使用此映像,docker-compose down && docker-compose up-下次构建。

docker-compose down && docker-compose up --build -d

使用--build选项,docker-compose将执行Dockerfile中的步骤并运行这些步骤,我的所有更改都将被还原。

问题: 无论如何,我可以告诉docker-compose使用新创建的映像作为缓存,而忽略该容器的Dockerfile吗?

解决方案: 我已经尝试过使用docker-compose-override并使用选项cache-from,但无法正常工作。

docker-compose.override.yml

container:
    build:
      cache_from:
         - new-image:latest

谢谢。

1 个答案:

答案 0 :(得分:0)

即使您已经通过docker-commit构建了映像,我也不明白您为什么要从docker-compose构建映像。

  

现在我有了带有最新标签的新图像。   我想要的是在运行时使用此图像,docker-compose down && docker-compose up

如果您已经构建了映像,请跳过docker-compose中的build阶段。只需指定应该使用哪个图像即可,

container:
    image: new-image:latest
    container_name: "Foo bar"
    .....(other options)
  

Image

     

指定要从中启动容器的图像。可以是   存储库/标签或部分图片ID。

image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
     

如果图像确实   不存在,除非您也指定了Compose尝试拉它   构建,在这种情况下,它将使用指定的选项和标签进行构建   并带有指定标签。

如果您从docker-compose内部构建了其他映像,请运行:

docker-compose build && docker-compose up

如果不是简单的docker-compose up就足够了。