Docker撰写更改后不更新图像

Posted

技术标签:

【中文标题】Docker撰写更改后不更新图像【英文标题】:Docker compose not updating images after change 【发布时间】:2018-06-29 20:57:30 【问题描述】:

我有一个 docker compose 的 yml 文件来创建两个容器并连接它们。 我今天对代码进行了一些更改(替换了要添加到其中一个 docker 文件中的文件夹)。这是 yml 文件:

version: '3'
services:
  web:
    build: ./web
    ports:
     - "8000:8000"
    restart: always
    volumes:
     - web:/www

  nginx:
    build: ./nginx
    ports:
     - "80:80"
    restart: always
    links:
     - web
    volumes:
     - web:/www
volumes:
    web:

我所做的更改是对 ./web 中的 dockerfile:

FROM python:3.6.4

RUN mkdir /www
WORKDIR /www
ADD . /www/
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python /www/davidbien/manage.py migrate
CMD cd dockertest && gunicorn dockertest.wsgi:application -w 2 -b :8000

我所做的更改是从 dockertest 文件夹中更改 /davidbien/ 文件夹名称。

我尝试通过运行来重建图像:

docker-compose build --no-cache

但这并没有帮助。 我还尝试了没有 --no-cache 的相同命令。 我也试过了:

docker-compose up --force-recreate

重建后,但当我运行脚本时,我不知道为什么旧文件夹仍然出现(即使它已被删除)。 我还能做些什么来清除 docker-compose 中的缓存?我用谷歌搜索,但只得到了上述两个命令。 谢谢

【问题讨论】:

你能把你的 yml compose 文件连同你具体更改的内容一起放上去吗?没有任何上下文是不可能帮助你的。 谢谢迈克,我完全错过了。编辑了我的帖子。 起床前你试过docker-compose down吗? Mike docker-compose 会识别出本地注册表中有新的镜像,并且会自动重新创建容器,除非你特别重启而不是启动。无论如何,docker-compose 没有缓存,它只是包装了 docker 命令(运行、停止等) 我尝试运行 docker-compose down --rmi all 来删除所有图像。之后,我使用docker-compose build --no-cache 重建它们,并在最后重建它们。结果还是一样。这真的很奇怪,因为文件夹 dockertest 已被删除,所以我猜它正在被缓存。我也尝试重新启动我的机器,但仍然没有。 【参考方案1】:

我遇到了同样的问题,我设法解决这个问题并更新我的容器的最快方法是更改​​它们的名称。

所以,我有一个名为 app 的容器,它的设置在 app.docker 中。我分别将其重命名为phpphp.docker。运行 docker-composer up -d 创建了更新的容器。

【讨论】:

以上是关于Docker撰写更改后不更新图像的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 5 + SQL Server Docker 容器:无效的撰写项目

我们可以在容器运行时用 docker-compose 替换图像吗

docker-compose未显示对代码的任何更改

Docker如何更改存储库名称或重命名图像?

检查图像的更新 Docker 构建 [重复]

sh 安装Docker和Docker撰写Ubuntu 16.04