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"]
相关推荐
南极星100518 小时前
OPENCV(python)--初学之路(十六)SURF简介
python·opencv·算法
Q_Q51100828518 小时前
python+django/flask+vue基于深度学习的图书推荐系统
spring boot·python·django·flask·node.js·php
sugar椰子皮18 小时前
【爬虫框架-5】实现一下之前的思路
开发语言·爬虫·python
码界奇点18 小时前
基于Flask与Vue.js的百度网盘自动转存系统设计与实现
vue.js·python·flask·自动化·毕业设计·源代码管理
闲人编程18 小时前
Flask扩展开发:从零编写自己的Flask扩展
后端·python·flask·sqlalchemy·config·login·codecapsule
计算衎19 小时前
基于python的FastAPI框架目录结构介绍、开发思路和标准开发模板总结
开发语言·python·fastapi
song50119 小时前
鸿蒙 Flutter 应用签名:证书配置与上架实战
人工智能·分布式·python·flutter·华为·开源鸿蒙
wjykp19 小时前
第八章异常
开发语言·python
(●—●)橘子……19 小时前
3643.垂直翻转子矩阵 练习理解
笔记·python·学习·算法·leetcode·矩阵
乐观甜甜圈19 小时前
线性代数入门讲解:第一部分:向量与矩阵运算
python·线性代数·矩阵