🧰 准备阶段

✅ 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