我是Docker的新手,开始了解整个过程的工作原理。我的最终目标是将我的Django项目(目前正在本地运行(部署到Google Code Run或类似的服务中,但还有一段路要走。
事实上,多亏了这本书,我已经在Mac上的Docker容器中运行了我的项目,这太棒了。
我的Dockerfile从开始
FROM python:3.8
并且包含
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
因此,每次我构建容器时,我想Linux、Python、Django和我正在使用的其他包都会自动包含可用的更新(除非我另有声明,例如我的Pipfile中的包(。
这个想法是在本地开发应用程序,并在我的Mac上使用Docker测试所有内容。当谈到更新时,我必须检查一切是否仍然一致。如果本地一切正常,我(稍后(可以将容器部署到其他地方,一切都应该正常。
我基本上是对的还是错过了重要的事情?
需要跟踪的一件重要事情是,基础图像(ubuntu:18.04
、python:3.8
等(偶尔会得到更新。您需要确保docker pull
是基本映像,以获得这些更新;如果不这样做,那么您将在现有的旧基础映像之上构建一个新的应用程序映像。docker build
有一个--pull
选项,可以自动执行此操作。
还要记住,Pipfile.lock
中有非常特定的包版本,因此您需要定期更新它以获得依赖关系(例如,使用pipenv update
(。
总体策略是在本地开发Python应用程序,使用标准的打包工具,然后围绕它构建图像,这通常是一种很好的方法。