要把一个 Python 应用部署到 Docker 容器中,整体流程是:
编写 Python 程序 → 编写
Dockerfile→ 构建镜像 → 启动容器运行
下面是完整、实用的步骤和示例:
✅ 示例场景:Flask 应用部署到 Docker
假设你有一个简单的 Flask 应用目录如下:
myapp/
├── app.py
├── requirements.txt
└── Dockerfile
① 编写你的 Python 应用(app.py)
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
② 写依赖文件(requirements.txt)
flask==2.3.2
③ 编写 Dockerfile
# 使用官方 Python 运行时作为父镜像
FROM python:3.10-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制源代码
COPY . .
# 暴露端口(Flask默认5000)
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
④ 构建 Docker 镜像
在 myapp 目录下执行:
docker build -t my-python-app .
⑤ 启动容器
docker run -d -p 5000:5000 --name python-container my-python-app
打开浏览器访问 http://localhost:5000,你应该能看到 Hello, Docker!。
✅ 高级选项(可选)
🔸 使用 docker-compose 管理
docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
然后运行:
docker-compose up --build
🔸 进入容器调试
docker exec -it python-container /bin/bash
🔸 停止 & 删除容器
docker stop python-container
docker rm python-container
🧠 小贴士
- Python 项目里如有数据库或缓存服务(如 MySQL、Redis),可通过 Docker Compose 联合部署。
- Flask 中
host='0.0.0.0'是必须的,否则容器外部无法访问。 - 镜像体积太大时,可以基于
python:3.10-alpine做瘦身。