🧰 准备阶段
✅ 1. 编写 Dockerfile
在你的 Python 项目根目录创建 Dockerfile,比如:
》》》点击展开Dockerfile脚本源码《《《
# 使用官方 Python 3.10 Slim 版镜像
FROM python:3.10-slim-buster
# 定义镜像标签
LABEL maintainer="qizai"
# 设置 Python 环境变量
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
TZ=Asia/Shanghai
# 定义 `build-arg` 供用户选择是否使用国内源(默认关闭)
ARG USE_CHINA_MIRROR=False
# 有条件地配置 APT 源
RUN if [ "$USE_CHINA_MIRROR" = "True" ]; then \
echo "使用国内镜像源..." && \
rm -rf /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian buster main contrib non-free" > /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian buster-updates main contrib non-free" >> /etc/apt/sources.list; \
else \
echo "使用官方默认源..."; \
fi && \
apt-get update && \
apt-get install -y --no-install-recommends tzdata && \
ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
dpkg-reconfigure --frontend noninteractive tzdata && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 设置 pip 国内源(仅中国环境生效)
RUN if [ "$USE_CHINA_MIRROR" = "True" ]; then \
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/; \
fi
# 复制 `requirements.txt` 并安装 Python 依赖
COPY requirements.txt /tmp/
RUN pip install --no-cache-dir -r /tmp/requirements.txt && \
pip install --no-cache-dir --upgrade python-alipay-sdk && \
rm -rf /tmp/requirements.txt # 删除 requirements.txt,减少镜像大小
# 设置工作目录(让 `docker-compose` 动态挂载)
WORKDIR /app
# 默认启动命令(可以由 `docker-compose` 覆盖)
CMD ["python"]
☑️ 2.requirements.txt 文件,包含所有依赖包:
📝 ./requirements.txt
flask
requests
pandas
# 根据你的项目实际填写
🛠️ 构建镜像
执行以下命令构建你的 Docker 镜像:
docker build -t my-python-env .
构建成功后,你可以通过以下命令确认:
docker images | grep my-python-env
🚀 推送到 Docker Hub
🧩 1. 登录 Docker Hub
docker login
🔐 输入你的 Docker Hub 用户名和密码。
🏷️ 2. 给本地镜像打标签(tag)
docker tag my-python-env your-dockerhub-username/my-python-env:latest
例如:
docker tag my-python-env bob123/my-python-env:latest
☁️ 3. 推送到 Docker Hub 私有仓库
docker push your-dockerhub-username/my-python-env:latest
如果第一次创建,需要先在 Docker Hub 网站上手动创建一个名为 my-python-env 的仓库,勾选 Private。
📥 拉取镜像并使用(其他机器)
在另一台机器上:
docker pull your-dockerhub-username/my-python-env:latest
docker run --rm -it your-dockerhub-username/my-python-env:latest
🧹 建议与优化
📁 1. 使用 .dockerignore 文件
为加快构建速度并优化体积,在项目根目录创建 .dockerignore
:
📝 ./.dockerignore
__pycache__/
*.py[cod]
.env
*.env
venv/
.idea/
*.log
作用类似于 .gitignore,防止无关大文件被复制进镜像。
🧭 2. 使用版本号标签(tag)进行版本管理
建议不要只使用 :latest,而用明确版本号发布:
docker tag my-python-env your-dockerhub-username/my-python-env:v1.0
docker push your-dockerhub-username/my-python-env:v1.0
可以保留多个版本,方便回滚或追溯更改。
例如:
- v1.0:初始版本
- v1.1:更新设置
- v2.0:升级 Python 版本/依赖
⚠️ 3. 若使用私有仓库,请务必:
- 设置仓库为私有(Private)
- 登录后再 push
- 使用 access token 登录(推荐)
✅ 总结流程图
[本地项目]
↓ 创建 Dockerfile & requirements.txt
↓
[构建镜像 docker build -t xxx ]
↓
[本地镜像]
↓↑(tag)
[your-dockerhub-username/xxx:tag]
↓
[docker push 上传到 Docker Hub]
↓
[其他机器 docker pull & run]
✅ 到此,你已成功完成:
- 🍱 自定义 Python 镜像构建
- 📤 上传至 Docker Hub(私有或公开)
- 📦 跨机使用、部署稳定镜像
作者:freed 创建时间:2025-03-30 10:02
最后编辑:freed 更新时间:2025-03-30 12:01
最后编辑:freed 更新时间:2025-03-30 12:01