Docker部署python:零基础也能上手
准备工作:安装Docker并准备Python项目
在开始之前,确保你的服务器或本地电脑已经安装了Docker。
如果你还没有安装,可以访问Docker官网下载对应系统的Docker Desktop(Windows/Mac)或使用包管理器(Linux)。
验证安装是否成功:
docker --version
同时准备一个简单的Python项目目录,比如 my-python-app,里面至少包含一个 app.py 文件和一个 requirements.txt(如果用到第三方库)。
例如一个最简的Flask应用:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Docker!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
编写Dockerfile:关键指令逐一说清
在项目根目录创建名为 Dockerfile 的文件(注意大小写),用文本编辑器打开并写入以下内容:
# 指定基础镜像,这里用官方Python 3.11-slim版本
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 将本地的requirements.txt复制到镜像中
COPY requirements.txt .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 将当前目录的所有文件复制到工作目录
COPY . .
# 声明容器运行时监听的端口
EXPOSE 5000
# 容器启动后执行的命令
CMD ["python", "app.py"]
注意:requirements.txt 里可以写 flask(一行一个库)。
如果没有任何第三方库,可以不创建该文件,并删除Dockerfile中对应行。
构建镜像并启动容器
打开终端,进入项目目录,执行以下命令构建镜像(镜像名随意,这里叫 my-python-app):
docker build -t my-python-app .
构建过程会下载基础镜像并执行各步骤,耐心等待完成。
成功后使用 docker images 看到新镜像。
然后启动容器:
docker run -d -p 5000:5000 --name my-app my-python-app
-d表示后台运行-p 5000:5000将宿主机的5000端口映射到容器的5000端口--name给容器起个名字
高频报错与避坑攻略
1. 构建时提示“找不到requirements.txt”
检查Dockerfile里写的路径是否正确,确保 requirements.txt 确实在项目根目录;如果不需要依赖,删掉 COPY requirements.txt 和 RUN pip install 两行。
2. 容器启动后马上退出
常见原因:Python脚本有语法错误或端口被占用。先用 docker logs my-app 查看日志,根据错误调整代码。
3. 宿主机访问不到容器
确认 docker run 时做了端口映射(-p),并且防火墙没有阻挡5000端口。可以使用 curl http://localhost:5000 测试。
4. 镜像体积过大
选择更小的基础镜像如 python:3.11-alpine,但要注意部分库可能需要编译工具,新手建议先用 slim 版本。
验证部署成功的方法
执行以下命令检查容器状态:
docker ps
如果看到 my-app 处于 Up 状态,说明容器运行正常。
打开浏览器,访问 http://你的服务器IP:5000(本地测试就用 http://localhost:5000),如果看到“Hello from Docker!
”字样,说明整个 Docker部署python 流程顺利完成。
你也可以用 docker stop my-app 和 docker start my-app 来管理容器生命周期。
如果你在操作中遇到其他问题,欢迎在评论区留言,我会根据大家反馈补充更多避坑细节。