docker - Docker 不会在其基于的映像更新后更新 compose 中的服务容器
问题描述
我有一个基本图像,其中包含一些我很少更新的应用程序。然后我有一个更经常更新的图像,它使用该基本图像(FROM
在 Dockerfile 中)。最后,我在生产服务器上有一个 docker-compose,它通过使用应用程序映像 url(到自托管注册表的 url)来组合多个服务。这些服务有不同的环境变量和命令。
当我需要在生产中更新服务时,我只构建应用程序映像(而不是基础映像)。之后,我将新图像推送到注册表并标记两次,一次带有时间戳,一次带有“最新”。
然后我进入生产服务器和docker-compose pull
图像,最后进入docker-compose up -d
.
我的期望是更新服务的图像,但是当我exec -it <id> bash
进入服务时,我看不到文件应该更新。
不过,新图像肯定会被拉出,因为当我run -it <id> bash
进入图像时,我会看到更新的文件。
解决方案
docker-compose up --build -d
使用否则启动堆栈,如果projectname_service
图像已经存在,它将只运行它而不重建它需要的层。如果基础镜像被更新,它应该有一个新标签,你应该FROM
在顶部更新你的语句以触发镜像的完全重建
推荐阅读
- python - 通过 for 循环创建字典 (?)
- python - Plotly Dash 应用程序未运行
- android - Android Room JUnit 测试:“AsyncTask #1”java.lang.IllegalStateException:无法执行此操作,因为没有当前事务
- scala - List.view 和 LazyList 有什么区别?
- apache - 如何在 uWamp 中修复 apache 服务器
- c - 不能重新分配双指针动态内存
- javascript - 在移动 Safari 的私有模式下,localStorage 不会在选项卡之间共享
- python-3.x - 我如何注释分组的断条形图 Python Matplotlib
- python - OpenCV:不规则形状区域中的每个颜色像素数?
- docker - 无法从在 docker 中运行的 Kafkacat 连接到在 Windows 机器上本地运行的 Kafka 代理