docker - 即使在重建之后,Docker 也不会使用最新版本
问题描述
我有一个奇怪的问题,昨天才开始。一般来说,我有一个简单的工作流程,这样每当我有新的更新时,我都会构建新的容器,然后重新启动 docker。
所以:
bash docker-compose build <container>
我然后做docker-compose down; docker-compose up
。这使用了最新版本。
但是,出于某种原因,它继续使用旧版本。
在我的 Dockerfile 中,我有两行这两行:
COPY . .
RUN npm run build
真正让我失望的是,在标准输出中我可以看到它正在编写新文件,因此使用了最新版本的代码(我知道这一点是因为有一些以前不存在的新文件并且它们正在被记录在标准输出中)。
但是,一旦它建成,我进入容器,我可以看到它正在使用旧版本的代码。
所以,对我来说,它的构建是正确的,只是使用了不正确的版本。
我想肯定发生了一些错误,我真的删除了所有容器,修剪了卷,重新启动了 ubuntu 并再次尝试。它奏效了!
除了,问题重新开始,我似乎无法弄清楚发生了什么。
帮助?
编辑:我应该提到我已经尝试过docker-compose up --build
,我已经尝试过强制创建并且没有缓存标志。还是没有运气。
解决方案
我发现问题与音量有关。因为我现在创建了一个卷,其中两个不同的容器共享代码,而不是使用新代码,它总是使用相同的代码。
所以要解决这个问题,只需要一个-v
docker-compose down ( docker-compose down -v
)。
这删除了所有卷并解决了问题。
推荐阅读
- java - 连接器 J 安装
- r - R 和指数,标准二阶
- reactjs - [Webpack][React] 在带有代码拆分的 SSR 上,我如何获取页面所需的块列表?
- c# - 应用程序获得/失去焦点事件
- flutter - 在 Flutter 的 Stepper 中,如何将 Step 的标题放在 counter 下方?
- javascript - jQuery 不会使用 2 个选择器
- javascript - 如何绘制 D3.js 甘特图
- reactjs - 来自国家的价值不存在| 反应
- sas - 使用 SAS Proc Logistic 为大型数据集生成交互项
- android - 在其他应用程序模块中使用 AIDL 文件