ano*_*cha 2 python git flask docker
我想我在做一些愚蠢的事情,但不知道是什么。我有一个简单的 python Flask 应用程序的 docker 文件(如下所示)。当我构建容器然后运行它时,我看到我的代码的旧副本正在 Flask 应用程序中运行。我的 git repo 没有任何分支,所以不太可能是这样。我还确保通过运行命令删除以前的 docker 映像docker image rm -f DOCKERTAG。还做了 docker prune 进行清理。但在构建并运行 docker 镜像后,我仍然看到旧版本的代码。当我输入此内容时,我想知道 github 令牌是否会与旧版本绑定,但这没有任何意义。请帮忙。为了清楚起见,这些是我的构建和运行命令。我还可以确认问题所在,因为当代码在 dockerfile 中替换为git clone时,应用程序使用最新代码运行。RUN git clone.... COPY ./
docker image build -t XYZ .
docker container run -p 5000:5000 XYZ
FROM python:3.6
RUN apt-get update
RUN apt-get install -y git
RUN git clone https://GITHUBTOKEN@github.com/GITHUBACCOUNT/MYREPO
WORKDIR /translator-be
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app/app.py"]
Run Code Online (Sandbox Code Playgroud)
Docker 将始终尝试使用构建缓存来加速镜像构建。
您的情况的问题是,从 docker 的角度来看,没有任何变化,因此它不会再次克隆存储库,而是使用包含旧版本的构建缓存。
--no-cache在这种情况下你可以使用:
docker build --no-cache -t XYZ .
如果你的构建需要一些时间,这显然不是一个很好的解决方案,因为你将完全失去 docker 有用的缓存机制。
因此,我建议采用不同的构建设置,例如检查构建服务器(例如 Jenkins)上存储库的当前状态,然后在项目目录中构建容器:
docker build -t XYZ .