docker run git checkout 不获取分支中的更改?

标签 docker

为什么RUN git checkout -b mybranch切换到分支,但内容仍然是从 master 获取的内容分支?

最佳答案

Docker 的全部意义在于它只重建图像中已更改的部分。它无法知道 repo 中的内容发生了变化,它所知道的只是 Dockerfile 中已经有一个用于此步骤的缓存图像“切片”。所以它使用它之前构建的图像。

正如 Mark 所说,您可以使用 --no-cache 强制重新生成。另一种选择是拥有一个始终使用 --no-cache 构建的源代码容器,您将卷添加到该容器中,然后通过不同容器中的这些卷使用该代码(查看 docker-compose 的“volumes from”)。然后,您总是可以在 repo 中获得更改,因为它每次都是从头开始构建的。您可能需要查看 'docker-compose' 来完成此类工作。

当您运行 docker build 时,请仔细查看输出。当它有一个步骤的缓存版本时,它会说很多。当它必须构建它时,它也会注意到这一点。

关于docker run git checkout 不获取分支中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653226/

相关文章:

r - 在 docker 上安装本地 R 库时遇到问题

docker - Jenkins:在Windows上构建并推送Docker镜像

docker - 如何从 minikube 中删除现有的已下载 docker 镜像

docker - 无法运行docker commit,空间不足

mysql - 启动 mysql 服务器 docker 容器时出现问题 - 无法通过 "Initializing database"

django - 如何防止我的脚本在每次启动 Docker 容器时运行?

reactjs - 如何从日志文件而不是应用程序日志输出日志

tomcat - Docker 官方 Tomcat Image 修改 Server.xml 并将 jar 添加到 lib 文件夹

docker - 传递参数/将映射添加到正在运行的Docker容器

python - 我的 PostgreSQL docker 镜像数据库在 Django 上不存在