我已经建立了一个docker django容器,并使用build here构建了其图像。本教程演示了如何创建一个基本的django应用程序,并将应用程序安装到“/ code”,据我了解,它包含在一个数据卷中。在Docker容器中更新代码
但是我想了解,我将如何能够更新和开发此代码,并能够发布/部署它。由于当我提交时,它不会考虑代码中的任何更改,因为它是数据卷的一部分。
有没有什么办法让django代码成为图像的一部分,或者用更新的代码更新图像?
我已经建立了一个docker django容器,并使用build here构建了其图像。本教程演示了如何创建一个基本的django应用程序,并将应用程序安装到“/ code”,据我了解,它包含在一个数据卷中。在Docker容器中更新代码
但是我想了解,我将如何能够更新和开发此代码,并能够发布/部署它。由于当我提交时,它不会考虑代码中的任何更改,因为它是数据卷的一部分。
有没有什么办法让django代码成为图像的一部分,或者用更新的代码更新图像?
在tutorial的步骤9中,您设置了一个卷。本卷将链接您的当前目录和您的容器目录。换句话说,他们将是一样的。
因此,对本地文件的任何更新都会更改容器中的文件。请记住,您将需要重新启动您的应用程序,以便进行更改。
在部署图像之前,您需要创建第二个docker撰写文件。该文件将删除该卷,以便代码将保留在容器内,并且不会从外部更改。您可以按照docker compose documentation中提供的步骤操作。
当你想更新的图像,可以说由于你的应用程序代码的更改,您将图像生成过程中使用COPY
,所以在Dockerfile
你这样做
COPY /you/code/on/the/host /var/www
也看到了我对答案“卷”和图像编译https://stackoverflow.com/a/39314602/3625317,以阐明为什么您的代码在构建中缺失
您只需将Python源代码添加到已安装相应python依赖项的容器中即可。并保持该容器的'ENTRYPOINT'为'[“python”,“/path/to/my.py”]'。建立码头图像是你的CI系统根据规则完成的事情,例如只在标签上或仅从主机等等。 – activatedgeek
如何在容器中添加源代码而不是在数据卷中? – bilalba
一般工作流程有一个单独的'Dockerfile.development'和'Dockerfile'(用于生产)。卷正在开发中,但生产dockerfile没有卷指令(在你的情况下它不是必需的)。只需简单地做一个'ADD。/code'。没有卷。 – activatedgeek