我有一个基本映像,其中包含一些我很少更新的应用程序内容。然后,我有一个使用该基本映像(在Dockerfile中带有FROM
)的映像,该映像更经常更新。最后,我在生产服务器上使用了docker-compose,该服务器通过使用应用程序图片网址(指向自托管注册表的网址)组成了多种服务。这些服务具有不同的环境变量和命令。
当我需要在生产环境中更新服务时,我只会构建应用程序映像(而不是基础映像)。之后,我将新映像推送到注册表并标记两次,一次带有时间戳,一次带有“最新”。
然后我进入生产服务器并docker-compose pull
映像,最后我docker-compose up -d
。
我期望服务的映像已更新,但是当我exec -it <id> bash
进入服务时,我看不到文件应有的更新。
新图像肯定会被拉出,因为当我run -it <id> bash
进入图像时,我会看到更新的文件。
答案 0 :(得分:0)
使用docker-compose up --build -d
启动堆栈,否则如果projectname_service
映像已经存在,它将直接运行它,而不重建其需要的图层。而且,如果基础映像已更新,则应在其顶部添加一个FROM
语句,以触发该映像的完全重建