
容器化的核心优势:
将一个Python应用容器化主要包含三个步骤:编写Dockerfile、构建镜像、运行容器。下面我们以一个简单的Flask Web应用为例,详细说明每个步骤。
假设我们有一个简单的Flask应用,文件结构如下:
myapp/
├── app.py
└── requirements.txtapp.py(主应用文件):
from flask import Flask
app = Flask(__name__)
@app.route('/')def home(): return "Hello from Containerized Python App!"
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)requirements.txt(依赖列表):
Flask==2.0.1Dockerfile是一个文本文件,包含了一系列指令,用于定义如何构建Docker镜像。在 myapp 目录下创建 Dockerfile (无扩展名):
# 使用官方Python轻量级镜像作为基础FROM python:3.9-slim
# 设置工作目录WORKDIR /app
# 将依赖文件复制到容器内COPY requirements.txt .
# 安装Python依赖RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码到容器内COPY . .
# 声明容器运行时监听的端口EXPOSE 5000
# 定义容器启动时执行的命令CMD ["python", "app.py"]Dockerfile指令详解:
在包含Dockerfile的目录下,执行构建命令:
docker build -t my-python-app:latest .命令解析
构建过程中,Docker会逐行执行Dockerfile中的指令,下载基础镜像,安装依赖,最终生成一个包含完整应用环境的镜像。
镜像构建完成后,即可基于它运行容器:
docker run -d --name python-web -p 5000:5000 my-python-app:latest命令解析:
容器启动后,在浏览器中访问 http://localhost:5000 ,可看到“Hello from Containerized Python App!”的响应。
对于生产环境,可以使用多阶段构建来减小最终镜像的体积:
# 第一阶段:构建阶段
FROM python:3.9 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
# 第二阶段:运行阶段
FROM python:3.9-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
EXPOSE 5000
CMD ["python", "app.py"]创建 .dockerignore 文件,排除不必要的文件被复制到镜像中,加速构建过程并减小镜像体积:
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
.env
.git/
.DS_Store
README.md通过Docker容器化Python应用,开发者可以将复杂的环境依赖问题封装在镜像内部,实现应用与运行环境的解耦。掌握Python应用容器化方法,将显著提升开发效率、确保环境一致性,并为持续集成/持续部署(CI/CD)奠定坚实基础。
“无他,惟手熟尔”!有需要的用起来!
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!