Docker 运行 Python 应用

在容器化技术日益普及的今天,Docker已成为Python开发者部署应用的利器。

本文将介绍Docker运行Python的三种主流方案:直接运行官方镜像、构建自定义镜像以及使用docker-compose管理复杂项目,并提供完整的实现代码和优化建议。

一、直接运行Python官方镜像

方式1、快速测试Python环境

# 拉取Python官方镜像
docker pull python:3.11-slim

# 运行交互式Python环境
docker run -it --name mytest python:3.11-slim

进入容器后可直接输入Python代码测试:

print("Hello from Docker!")

方式2、直接运行本地Python脚本

# 挂载本地脚本目录并运行
docker run -d --name mytest2 -v /root/test:/scripts python:3.11-slim python -u /scripts/main.py

二、构建自定义Docker镜像

1、项目结构准备

my_python_app/
├── main.py          # 主程序
├── requirements.txt # 依赖文件
└── Dockerfile       # 构建配置

2、main.py 内容:

# encoding:utf-8
import time

while True:
    print("你好!")
    time.sleep(1)

3、requirements.txt 示例:

flask==3.0.2

4、Dockerfile 内容:

# 使用官方Python镜像作为基础镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 将当前目录下的所有文件复制到Docker容器的/app目录下
COPY . /app

# 安装依赖(如果有requirements.txt文件)
RUN pip install --no-cache-dir -r requirements.txt

# 运行Python脚本
#CMD ["python", "./main.py"]
# 加 -u 参数禁用输出缓冲
CMD ["python", "-u", "./main.py"]

5、构建与运行命令:

# 构建镜像
docker build -t test .

# 运行容器
docker run -d --name mytest test

# 访问容器内的文件或进行调试
# docker exec -it mytest bash

三、使用 docker-compose 管理

1、docker-compose.yml 文件内容:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=production
    volumes:
      - ./app:/app

2、服务启动与调试

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 进入运行容器
docker-compose exec mytest /bin/bash

四、关键优化建议

1、镜像选择策略

镜像类型 适用场景 体积大小
python:3.11 开发环境 900MB
python:3.11-slim 生产环境 120MB
python:3.11-alpine 极小体积需求 40MB

2、安全性增强

dockerfile:

# 创建非root用户运行
RUN useradd -m myuser && chown -R myuser /app
USER myuser

3、依赖管理规范

# requirements.txt 示例
flask==3.0.2
pandas==2.1.4
numpy>=1.26.0

建议使用版本锁定(==)或版本范围(>=)明确依赖版本。

五、相关文件下载

测试示例.zip