创建自己的Docker镜像,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
前一篇博文:建自己的Python项目仓库,在此基础上,本文讨论
创建自己的Docker镜像的流程,核心是通过Dockerfile定义镜像配置,并通过工具协同管理相关文件。以下是具体步骤:
一、准备工作
- 确保已安装:
- Docker Desktop(已启动,且能正常运行
docker
命令) - 已完成前面的Python项目仓库搭建(包含
src/
、requirements.txt
等核心文件)。
- Docker Desktop(已启动,且能正常运行
二、添加Docker相关文件(在VSCode中操作)
在项目根目录下新增2个关键文件,用于定义Docker镜像构建规则:
1. Dockerfile
(核心配置文件)
在VSCode中新建文件Dockerfile
(无后缀),内容如下(针对Python项目的通用模板):
# 基础镜像:选择Python官方镜像(版本与项目兼容,如3.9)
FROM python:3.9-slim# 设置工作目录(容器内的项目根目录)
WORKDIR /app# 复制依赖文件到容器(优先复制依赖文件,利用Docker缓存加速构建)
COPY requirements.txt .# 安装项目依赖(使用国内镜像源加速,可选)
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 复制项目所有文件到容器(.dockerignore中排除的文件不会被复制)
COPY . .# 可选:暴露端口(若项目是Web服务,如Flask/Django,需指定端口)
# EXPOSE 5000# 容器启动命令(根据项目类型修改,此处以运行示例脚本为例)
CMD ["python", "examples/demo.py"]
2. .dockerignore
(排除无需打包的文件)
在VSCode中新建.dockerignore
文件,避免将无关文件(如虚拟环境、编辑器配置)打包进镜像,减少镜像体积:
# 排除Git相关文件
.git
.github/# 排除虚拟环境和依赖缓存
venv/
.venv/
__pycache__/
*.py[cod]# 排除编辑器配置
.vscode/
.idea/# 排除测试和文档(按需保留,若镜像需要运行测试可删除此行)
tests/
docs/# 排除本地日志和临时文件
logs/
tmp/
三、提交Docker文件到仓库(用GitHub Desktop)
- 在VSCode中保存
Dockerfile
和.dockerignore
后,切换到GitHub Desktop。 - 此时会自动检测到这两个新增文件(标绿),在“Summary”中填写提交信息(如“添加Docker配置:支持镜像构建”)。
- 点击“Commit to main”提交到本地仓库,再点击“Push origin”推送到GitHub远程仓库(确保团队成员可共享Docker配置)。
四、构建并测试Docker镜像(在VSCode终端操作)
-
在VSCode中打开终端(
Ctrl+
``),进入项目根目录(已通过GitHub Desktop克隆的本地仓库路径)。 -
构建镜像:执行以下命令(
my-python-app
是自定义镜像名,:v1
是版本标签):docker build -t my-python-app:v1 .
- 过程说明:Docker会根据
Dockerfile
逐步执行命令(下载基础镜像→复制文件→安装依赖),首次构建可能需要几分钟。 - 成功标志:终端最后显示“Successfully tagged my-python-app:v1”。
- 过程说明:Docker会根据
-
运行容器测试:执行以下命令启动基于镜像的容器,验证功能是否正常:
docker run --rm my-python-app:v1
--rm
:容器退出后自动删除,避免残留。- 若
examples/demo.py
中有print
输出,终端会显示对应内容(如“数据清洗完成!”),说明镜像运行正常。
五、进阶:将镜像推送到Docker仓库(可选)
若需将镜像共享给他人(如团队成员或部署到服务器),可推送到Docker Hub或私有仓库:
- 登录Docker Hub(需提前注册账号):
docker login
- 给镜像打标签(格式:
仓库用户名/镜像名:版本
):docker tag my-python-app:v1 你的Docker用户名/my-python-app:v1
- 推送镜像:
docker push 你的Docker用户名/my-python-app:v1
六、工具协同
- VSCode:编辑
Dockerfile
和.dockerignore
,通过终端执行docker
命令,可安装“Docker”扩展(微软官方)实时验证Dockerfile语法。 - GitHub Desktop:将Docker配置文件纳入版本控制,确保团队使用统一的镜像构建规则。
- GitHub:远程仓库存储Docker配置,配合GitHub Actions可实现“代码提交后自动构建镜像”(需在
.github/workflows/
中添加CI配置)。
通过添加Dockerfile
和.dockerignore
,并结合VSCode编辑、GitHub Desktop版本控制、Docker命令构建,即可为Python项目创建标准化镜像。核心价值在于:确保项目在任何安装Docker的环境中都能以相同方式运行,解决“本地能跑,部署崩了”的环境一致性问题。
附:Dockerfile示例
# 基础镜像:选择Python官方镜像(版本与项目兼容,如3.9)
FROM python:3.9-slim# 设置工作目录(容器内的项目根目录)
WORKDIR /app# 复制依赖文件到容器(优先复制依赖文件,利用Docker缓存加速构建)
COPY requirements.txt .# 安装项目依赖(使用国内镜像源加速,可选)
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 复制项目所有文件到容器(.dockerignore中排除的文件不会被复制)
COPY . .# 可选:暴露端口(若项目是Web服务,如Flask/Django,需指定端口)
# EXPOSE 5000# 容器启动命令(根据项目类型修改,此处以运行示例脚本为例)
CMD ["python", "examples/demo.py"]