文章内容

2025/11/25 8:22:39,作 者: 黄兵

Python 项目 docker 部署过程

最近在学习使用 Docker 部署 Python 项目,前几天也写了这篇文章:Dockerfile 构建系统与 GitHub,但是主要思考的是如何将项目打包成 Docker 镜像,部署到服务器上,一直没有操作。

最近正好有一个间的服务需要部署到服务器上,于是我尝试使用 Docker 镜像的凡是部署服务,于是将操作详细过程记录下来,以方便以后使用。

在我们编写完成项目之后,在项目的更目录新建如下文件:

.github/workflows/docker-image.yml

文件主要内容:

name: Build and Publish Docker Image

on:
  push:
    branches: ["main"]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build Docker Image
        uses: docker/build-push-action@v6
        with:
          context: .
          push: true
          tags: ${{ secrets.DOCKERHUB_USERNAME }}/data-monitor:latest

新建完成之后,我们登录 GitHub,找到我们的项目,点击顶部的 Settings,截图如下:


之后找到右边的菜单,Secrets and variables 这个选项下面的 Actions 这里很容易找错,所以着重强调。截图如下:


之后设置 Repository secrets,截图如下:


这里需要设置 DOCKERHUB_USERNAME 和 DOCKERHUB_TOKEN,这两个参数我们可以登录 docker 找到这两个参数。

顶部是我们的用户名,我们填写到 GitHub 刚才 DOCKERHUB_USERNAME 设置的哪里:


下面的菜单我们需要新建一个 Token,截图如下:


填写 Token 相关信息,这里需要设置读写权限


建好了会给我们一个 Token 值,我们直接填写到 GitHub 的 DOCKERHUB_TOKEN

这样就完成了 GitHub Actions 的设置。

同时在我们的项目根目录新建一个 Dockerfile 文件,内容如下:  

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENV PYTHONUNBUFFERED=1

CMD ["python", "main.py"]

我们使用 Docker Compose 部署,所以我们还需要新建一个文件,内容如下:

services:
  data-log-parser:
    container_name: data-log-parser
    image: xxxxx96/data-monitor:latest
    restart: always

    # 读取 .env 文件
    env_file:
      - .env

    # 挂载主机日志文件和偏移文件目录
    volumes:
      - /root/nginx-quic/logs/access.log:/app/logs/access.log:ro
      - /root/nginx-quic/logs:/app/logs

    # 保持容器后台持续运行
    command: python main.py

新建完成这些文件之后,我们将代码提交,刚才新建的两个文件也一同提交到 GitHub。

之后我们到 GitHub,找到项目的 Actions 菜单,截图如下:


右边菜单会出现一个 Build and Publish Docker Image 的菜单,我们选择它:


这个就是我们刚才新建的 docker-image.yml 工作流内容,我们点击右边的 Run workflow 按钮,运行我们刚才设置的工作流:


这样就完成了在 GitHub Actions 完成 Docker 镜像的制作,同时会自动推送到 Docker Hub 上。

我们登录服务器,开始安装 Docker Compose v2,具体步骤查看这篇文章:Ubuntu 24.04 安装 Docker Compose v2

安装完成之后,我们开始在服务器上准备:

✅ 1. 在服务器上准备部署目录

随便找一个地方(例如 /opt/data-monitor):

sudo mkdir -p /opt/data-monitor
cd /opt/data-monitor

✅ 2. 创建 .env 文件

由于我们编写的代码服务依赖 .env,在该目录创建:

nano .env

写入我们项目中的配置:

REQUEST_URL="https://xxxxxx.com/log"

# 容器内读取的路径(不要改)
LOG_FILE="/app/logs/access.log"
OFFSET_FILE="/app/logs/log_offset.txt"

保存退出。

✅ 3. 创建 docker-compose.yml

/opt/data-monitor/docker-compose.yml 写入:

services:
  data-monitor:
    container_name: data-monitor
    image: xxxxx96/data-monitor:latest
    restart: always

    env_file:
      - .env

    volumes:
      # 日志文件映射(你的服务器日志路径)
      - /root/nginx-quic/logs/access.log:/app/logs/access.log:ro

      # 偏移量文件存储
      - /root/nginx-quic/logs:/app/logs

    command: python main.py

这里我们将宿主机的 /root/nginx-quic/logs/access.log 映射到 Docker 的 /app/logs/access.log 文件,这个文件具有读写权限。

✅ 4. 启动容器

/opt/data-monitor 目录中运行:

sudo docker-compose up -d

查看容器是否运行:

docker ps

6. 查看运行日志(确认正常工作)

docker logs -f data-monitor

🎉 这样我们就完成了部署


其它相关推荐:

1、Ubuntu 24.04 安装 Docker Compose v2

2、查看所有 docker 容器占用内存

3、Dockerfile 构建系统与 GitHub

4、docker run -d 这里的 -d 参数具体作用?

5、Docker 容器开机自动启动

分享到:

发表评论

评论列表