Docker实战:Python应用从打包到部署全流程
本文将以一个简单的Python Flask应用为例,带你快速走通Docker从本地打包测试到服务器部署的全流程。
1、准备工作
项目结构
1 2 3 4
| myapp/ ├── app.py ├── requirements.txt └── Dockerfile
|
示例文件
app.py - 一个简单的Flask应用
1 2 3 4 5 6 7 8 9
| from flask import Flask app = Flask(__name__)
@app.route('/') def hello(): return 'Hello Docker!'
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
|
requirements.txt
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
|
2、本地构建和测试
构建Docker镜像
1 2
| docker build -t my-python-app .
|
查看构建的镜像
本地运行测试
1 2 3 4 5 6
| docker run -d -p 5000:5000 --name myapp my-python-app
curl http://localhost:5000
|
查看容器状态
1 2
| docker ps docker logs myapp
|
停止和清理
1 2
| docker stop myapp docker rm myapp
|
3、推送到Docker Hub
登录Docker Hub
标记镜像
1 2
| docker tag my-python-app yourusername/my-python-app:v1.0
|
推送镜像
1
| docker push yourusername/my-python-app:v1.0
|
4、服务器部署
服务器环境准备
1 2 3 4 5 6
| curl -fsSL https://get.docker.com | sh
systemctl start docker systemctl enable docker
|
拉取并运行镜像
1 2 3 4 5
| docker pull yourusername/my-python-app:v1.0
docker run -d -p 5000:5000 --name myapp-prod yourusername/my-python-app:v1.0
|
服务器测试
1 2 3 4 5
| curl http://localhost:5000
curl http://服务器IP:5000
|
5、生产环境优化
使用docker-compose(可选)
创建 docker-compose.yml:
1 2 3 4 5 6 7
| version: '3' services: web: image: yourusername/my-python-app:v1.0 ports: - "5000:5000" restart: unless-stopped
|
运行:
常用管理命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker ps
docker logs myapp-prod
docker exec -it myapp-prod bash
docker stop myapp-prod
docker restart myapp-prod
docker rm myapp-prod
docker rmi yourusername/my-python-app:v1.0
|