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

相关推荐
TechWayfarer1 小时前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot
网络·人工智能·爬虫·python·tcp/ip·网络安全
禹凕1 小时前
滑动窗口算法实战指南
python·算法
论文复现现场2 小时前
RTX 4090 24GB 能跑 Qwen3.8-27B 吗?单卡显存计算与云端部署指南
人工智能·python·云计算·llama·gpu算力
Patrick在香港2 小时前
模型路由器实测:12 个任务省 77%,旗舰过载时的降级要打出显式标记
python·llm·智能路由器·api·架构设计·成本优化
Looooking2 小时前
Python 之 jwt 令牌生成和校验
python·jwt
野熊佩骑3 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
2601_962295994 小时前
嵌入式开发语言用哪个最好,C,python或者其他
c语言·python·嵌入式开发·开发效率·系统资源
菜鸡66664 小时前
绕过cf验证,部署 FlareSolverr 服务使用request处理
python·cloudflare
前端 贾公子4 小时前
第10章:RAG(2)
开发语言·python
2601_962299495 小时前
使用 Python 将 CSV 转为 PDF(含表格样式美化)
python·pdf·csv·spire.xls·表格样式