Dockerfile多阶段构建镜像(python)

使用 python:3.9 作为基础镜像

bash 复制代码
# 使用官方的 Python 3.9 镜像作为基础镜像
FROM python:3.9
# FROM python:3.9-slim

# 设置镜像的维护者信息
MAINTAINER Your Name <your.email@example.com>

# 设置工作目录
WORKDIR /app

# 复制当前目录中的所有文件到镜像的工作目录中
COPY . /app

# 在镜像中执行命令,安装应用程序的依赖, requirements.txt 文件被复制到了 /app 目录中。
RUN pip install --no-cache-dir -r /app/requirements.txt

# 暴露容器的端口
EXPOSE 80

# 定义容器启动时运行的命令
CMD ["python", "app.py"]

多阶段构建

  1. 阶段1(builder): 使用 python:3.9 作为基础镜像,将应用程序的代码复制到镜像中,然后安装依赖项并构建应用程序。构建好的文件将保存在 /usr/local/lib/python3.9/site-packages 和 /app 目录中。
  2. 阶段2: 使用 python:3.9-slim 作为基础镜像,只包含运行应用程序所需的最小依赖项。从前一个阶段中复制构建好的文件,包括依赖项和应用程序代码
bash 复制代码
# 阶段1: 构建应用程序
FROM python:3.9 AS builder

# 设置工作目录
WORKDIR /app

# 复制应用程序代码到镜像中
COPY . /app

# 在镜像中执行命令,安装依赖项并构建应用程序
RUN pip install --no-cache-dir -r /app/requirements.txt
RUN python setup.py install

# 阶段2: 创建轻量级的运行时镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 从前一个阶段中复制构建好的应用程序
COPY --from=builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
COPY --from=builder /app /app

# 暴露容器的端口
EXPOSE 80

# 定义容器启动时运行的命令
CMD ["python", "/app/app.py"]
相关推荐
第九序言T7 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路7 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003967 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_7 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
todoitbo8 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
quantdash_cc8 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl8 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang9 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真9 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn10 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github