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

相关推荐
weixin_5142218538 分钟前
FDTD与matlab、python耦合
python·学习·matlab·fdtd
F_D_Z6 小时前
数据集相关类代码回顾理解 | StratifiedShuffleSplit\transforms.ToTensor\Counter
python·torchvision·transforms
tao3556677 小时前
【Python刷力扣hot100】283. Move Zeroes
开发语言·python·leetcode
小宁爱Python7 小时前
从零搭建 RAG 智能问答系统1:基于 LlamaIndex 与 Chainlit实现最简单的聊天助手
人工智能·后端·python
湖南人爱科技有限公司7 小时前
RaPhp和Python某音最新bd-ticket-guard-client-data加密算法解析(视频评论)
android·python·php·音视频·爬山算法·raphp
eqwaak09 小时前
数据预处理与可视化流水线:Pandas Profiling + Altair 实战指南
开发语言·python·信息可视化·数据挖掘·数据分析·pandas
心态特好9 小时前
详解WebSocket及其妙用
java·python·websocket·网络协议
一水鉴天10 小时前
整体设计 逻辑系统程序 之18 Source 容器(Docker)承载 C/P/D 三式的完整设计与双闭环验证 之2
docker·架构·认知科学·公共逻辑
dlraba80210 小时前
用 Python+OpenCV 实现实时文档扫描:从摄像头捕捉到透视矫正全流程
开发语言·python·opencv
小熊出擊10 小时前
【pytest】fixture 内省(Introspection)测试上下文
python·单元测试·pytest