简介
Docker是一种轻量级的虚拟化技术,能够将应用程序及其依赖包打包成一个可移植的容器,实现快速部署和高效管理。以下将指导你如何使用Docker将Python脚本容器化,并部署到VPS服务器。
本地打包镜像
1. 创建项目文件结构
首先,创建一个名为my_openai_app的目录,并在其中创建以下文件:
text
代码解读
复制代码
my_openai_app/ ├── Dockerfile ├── requirements.txt └── app.py
2. 编写Python脚本(app.py)
以下是一个简单的OpenAI API调用脚本:
python
代码解读
复制代码
from openai import OpenAI import os client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) completion = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": "Write a one-sentence bedtime story about a unicorn." }] ) print(completion.choices[0].message.content)
3. 编写依赖文件(requirements.txt)
在requirements.txt中添加所需的依赖包:
text
代码解读
复制代码
openai>=1.0.0
4. 编写Dockerfile
使用多阶段构建来减少镜像体积:
text
代码解读
复制代码
# 第一阶段:构建环境 FROM python:3.11-slim AS builder WORKDIR /app COPY requirements.txt . RUN pip install --user -r requirements.txt # 第二阶段:生产镜像 FROM python:3.11-slim WORKDIR /app COPY --from=builder /root/.local /root/.local COPY app.py . # 确保pip安装的包在PATH中 ENV PATH=/root/.local/bin:$PATH CMD ["python", "app.py"]
5. 构建镜像
在终端运行以下命令构建镜像:
bash
代码解读
复制代码
docker build -t openai-app .
VPS服务器部署
1. 安装Docker
在Ubuntu/Debian系统上安装Docker:
bash
代码解读
复制代码
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl gnupg curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
2. 加载镜像并运行
将镜像保存为tar文件并上传到VPS:
bash
代码解读
复制代码
docker save -o openai-app.tar openai-app
上传后,在VPS上加载镜像:
bash
代码解读
复制代码
docker load -i openai-app.tar
运行容器时传入API密钥:
bash
代码解读
复制代码
docker run -e OPENAI_API_KEY=sk-your-api-key openai-app
关键优化点
- 多阶段构建:减少最终镜像体积,从1.2GB优化到150MB。
- 环境变量管理:通过
-e参数传递敏感信息,如API密钥。 - 依赖缓存:使用独立的
requirements.txt文件管理依赖。
验证部署
查看容器日志和状态:
bash
代码解读
复制代码
docker logs docker ps -a
注意事项
- API密钥安全:不要将API密钥写入Dockerfile,而是通过环境变量传递。
- 防火墙配置:确保VPS防火墙开放必要的端口(本例无需)。
- Docker组配置:建议配置docker组以避免使用sudo:
bash
代码解读
复制代码
sudo groupadd docker sudo usermod -aG docker $USER newgrp docker
通过这些步骤,你可以成功地将Python应用从本地容器化并部署到VPS服务器。
1694

被折叠的 条评论
为什么被折叠?



