docker file模板

发布时间 2023-08-05 10:01:16作者: 永远抱着学徒的心

# temp stage
# 构建临时阶段
FROM python:slim-bookworm as builder
# 使用 `python:slim-bookworm` 镜像作为构建阶段的基础镜像,并将其命名为 `builder`。
WORKDIR /app
# 将工作目录设置为 `/app`。
ENV PYTHONDONTWRITEBYTECODE 1
# 设置环境变量 `PYTHONDONTWRITEBYTECODE` 的值为 `1`,这将禁止 Python 生成 `.pyc` 字节码文件。
ENV PYTHONUNBUFFERED 1
# 设置环境变量 `PYTHONUNBUFFERED` 的值为 `1`,这将禁用 Python 的缓冲输出。
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
apt-get update && \
apt-get install -y --no-install-recommends gcc
# 替换 `/etc/apt/sources.list.d/debian.sources` 文件中的默认源为 `mirrors.ustc.edu.cn`,然后更新包列表并安装 `gcc` 编译器。
COPY requirements.txt .
# 将本地的 `requirements.txt` 文件复制到容器的当前工作目录。
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 使用 `pip wheel` 命令根据 `requirements.txt` 文件生成 Python 包的 wheel 文件,并将 wheel 文件保存到 `/app/wheels` 目录中。
# `--no-cache-dir` 参数禁用缓存,`--no-deps` 参数不安装依赖包,`-r requirements.txt` 指定要安装的包的清单文件,
# `-i https://pypi.tuna.tsinghua.edu.cn/simple` 指定使用清华大学的 PyPI 镜像源。
# final stage
# 最终阶段
FROM python:slim-bookworm
# 使用 `python:slim-bookworm` 镜像作为最终阶段的基础镜像。
WORKDIR /app
# 将工作目录设置为 `/app`。
COPY --from=builder /app/wheels /wheels
# 从构建阶段的 `builder` 镜像中复制 `/app/wheels` 目录到最终阶段的容器中的 `/wheels` 目录。
COPY --from=builder /app/requirements.txt .
# 从构建阶段的 `builder` 镜像中复制 `/app/requirements.txt` 文件到最终阶段的容器中。
COPY renix*.whl /wheels/
# 将本地的以 "renix" 开头且以 ".whl" 结尾的所有文件复制到容器的 `/wheels/` 目录中。
RUN pip install --no-cache /wheels/*
# 使用 `pip install` 命令安装 `/wheels/` 目录中的所有 wheel 文件,`--no-cache` 参数禁用缓存。

----------------------------------------------------------------

----------------------------------------------------------------

在项目根目录下创建一个名为requirements.txt的文本文件,并将所需的第三方库以每行一个库的形式列出

构建:docker build -t your-image-name .

等待镜像构建完成后,你可以使用以下命令来运行镜像:docker run your-image-name