在 Python 项目中,没有直接等同于 Java 项目中的 jlib
工具来打包和上传到 Docker Harbor。但我们可以使用 Docker 和 Docker Compose 等工具实现类似的功能。这些工具帮助您打包 Python 项目并将其推送到 Docker Harbor 中。
使用 Docker 和 Docker Compose 实现类似 jlib
的功能
以下是详细步骤:
1. 创建项目结构
假设您的项目结构如下:
my_fastapi_app/
├── app/
│ ├── main.py
│ └── ...
├── requirements.txt
├── Dockerfile
└── start.py
start.py
文件内容:
python
import uvicorn
if __name__ == "__main__":
uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="debug")
2. 创建 Dockerfile
在项目根目录下创建 Dockerfile
:
Dockerfile
# Use an official Python runtime as a parent image
FROM python:3.9-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 8000 available to the world outside this container
EXPOSE 8000
# Run start.py when the container launches
CMD ["python", "start.py"]
3. 使用 Docker Compose
创建一个 docker-compose.yml
文件,以便更轻松地管理和部署应用:
yaml
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
environment:
- ENV=production
4. 构建和推送镜像到 Harbor
首先,登录到您的 Harbor 仓库:
sh
docker login your-harbor-domain.com
使用 Docker Compose 构建镜像:
sh
docker-compose build
标记您的镜像以便推送到 Harbor:
sh
docker tag my_fastapi_app_web:latest your-harbor-domain.com/my_project/my_fastapi_app:latest
然后,推送镜像到 Harbor:
sh
docker push your-harbor-domain.com/my_project/my_fastapi_app:latest
5. 从 Harbor 拉取并运行镜像
在目标服务器上,从 Harbor 拉取并运行您的镜像:
sh
docker pull your-harbor-domain.com/my_project/my_fastapi_app:latest
docker run -d -p 8000:8000 your-harbor-domain.com/my_project/my_fastapi_app:latest
通过这些步骤,您可以使用 Docker 和 Docker Compose 来打包和上传 Python 项目到 Harbor 中,类似于 Java 项目使用 jlib
的流程。Docker 和 Docker Compose 提供了强大的工具集,可以轻松管理、构建和部署容器化应用。