python项目发布Docker Harbor

在 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 提供了强大的工具集,可以轻松管理、构建和部署容器化应用。

相关推荐
Bruce_Liuxiaowei32 分钟前
基于Python+Flask的MCP SDK响应式文档展示系统设计与实现
开发语言·python·flask·mcp
Golinie36 分钟前
Docker底层原理浅析 | namespace+cgroups+文件系统
docker·容器·文件系统·cgroups·unionfs
PyAIGCMaster1 小时前
Vscode已经打开的python项目,如何使用已经建立的虚拟环境
ide·vscode·python
晓柏1 小时前
OpenEuler 系统安装 docker 和 nvidia-docker
docker
Tiger_shl1 小时前
【Python语言基础】24、并发编程
java·数据库·python
<<1 小时前
基于Django的权限管理平台
后端·python·django
FreeBuf_1 小时前
新型恶意软件采用独特混淆技术劫持Docker镜像
运维·docker·容器
QMT量化交易2 小时前
如何解决PyQt从主窗口打开新窗口时出现闪退的问题
python·pyqt
databook2 小时前
『Plotly实战指南』--样式定制高级篇
python·数据分析·数据可视化
basketball6163 小时前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python