插件窝 干货文章 如何让Docker运行Python代码

如何让Docker运行Python代码

Python Docker requirements dockerfile 920    来源:    2025-04-29

在Docker中运行Python代码的完整指南

基本方法

1. 使用官方Python镜像运行Python脚本

# 使用官方Python镜像
FROM python:3.9-slim

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

# 设置工作目录
WORKDIR /app

# 运行Python脚本
CMD ["python", "your_script.py"]

构建并运行:

docker build -t python-app .
docker run -it --rm python-app

2. 直接运行Python脚本(无需构建镜像)

docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3.9 python your_script.py

进阶用法

1. 安装依赖项

FROM python:3.9-slim

WORKDIR /app

# 先复制requirements.txt文件,这样可以利用Docker的缓存层
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 然后复制其余文件
COPY . .

CMD ["python", "your_script.py"]

2. 使用虚拟环境(推荐)

FROM python:3.9-slim

WORKDIR /app

# 创建并激活虚拟环境
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "your_script.py"]

3. 多阶段构建(减小镜像大小)

# 构建阶段
FROM python:3.9 as builder

WORKDIR /app

COPY requirements.txt .
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --user -r requirements.txt

# 运行阶段
FROM python:3.9-slim

WORKDIR /app
COPY --from=builder /opt/venv /opt/venv

ENV PATH="/opt/venv/bin:$PATH"
COPY . .

CMD ["python", "your_script.py"]

实用技巧

  1. 调试容器

    docker run -it --entrypoint /bin/bash python-app
    
  2. 传递环境变量

    docker run -e "ENV_VAR=value" python-app
    
  3. 暴露端口(如果Python应用是Web服务):

    docker run -p 5000:5000 python-app
    
  4. 使用docker-compose(适合复杂应用):

    version: '3'
    services:
     python-app:
       build: .
       ports:
         - "5000:5000"
       volumes:
         - .:/app
       environment:
         - ENV_VAR=value
    

常见问题解决

  1. 权限问题

    • 使用--user参数指定用户ID
    • 或在Dockerfile中添加用户并设置权限
  2. 时区问题

    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
  3. 中文编码问题

    ENV LANG C.UTF-8
    
  4. 容器退出后数据持久化

    • 使用-v参数挂载卷
    • 或使用Docker卷

通过以上方法,您可以灵活地在Docker环境中运行Python代码,无论是简单的脚本还是复杂的应用程序。