我有一个正在 devcontainer 中开发的 Python 项目。源代码树如下所示:
---.devcontainer
|--- .devcontainer.json
|--- Dockerfile
|--- requirements.txt
---src
|--- file1.py
|--- file2.py
问题在于它应该被发布到“生产容器”中,其中涉及它自己的 Dockerfile 和打包脚本。
我的问题是:
- 我应该把“生产容器”Dockerfile 和打包脚本放在哪里?
- 我应该在哪里创建生产容器?我应该
docker build
在开发容器内运行吗? - 我应该何时运行
docker build
来构建生产容器?
Dockerfile 的名称应准确为
Dockerfile
,不带扩展名,并位于项目目录的根目录中( 旁边pyproject.toml
)。这是默认位置docker build
。构建脚本没有类似的规范位置。通常将它们也保存在项目根目录中,或者有一个
build
包含它们的bin
目录docker
。VSCode似乎不会自动将 Docker 套接字安装到开发容器中,因此默认情况下您无法运行
docker
命令。您必须确保安装套接字并安装 Docker CLI。docker build
直接在主机系统上运行可能更容易。(当您在那里时,请考虑使用 MacOS 或 Linux 主机上预装的 Python 进行普通开发,或者使用可以维护备用 Python 安装的非容器工具(如 Hatch 或 Pyenv)。)
docker build
每当您需要更新映像副本时,您都需要运行。我通常建议将其用于本地集成测试。您通常会有一个自动构建系统,当您提交到源代码控制时,它会为您构建映像,因此您通常不需要手动构建-推送-部署映像。同样,我会使用您的开发人员工具来运行普通单元测试(pytest
,hatch test
作为包装器),而根本不涉及容器。