Skip to content

简化单容器应用的持续部署流程:一个使用 Docker Compose 构建、运行并健康检查的 GitHub Action。

License

Notifications You must be signed in to change notification settings

hicane0/action-docker-build-single

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Docker Build And Run Action

License: MIT

用于通过 docker compose 构建和启动 Docker 容器,并进行简单的健康检查。

使用场景

为单容器持续部署 (Single-Container Continuous Deployment) 设计。

核心目的是在一个 CI/CD 流程中,构建并启动一个新版本的应用容器,并清理 dangling 镜像,同时在构建完成后对新启动的容器进行简单的健康检查。

  • 悬空镜像清理:构建结束后(无论成功与否),都会清理构建过程中产生的悬空镜像 (dangling images)。
  • 简单健康检查:通过检查最近创建的容器是否正在运行,来验证容器是否成功启动。
  • 构建用时统计:记录并输出构建过程的用时。
  • 失败日志输出:在容器启动失败时,输出相关日志以便调试。

先决条件

为了使此 Action 正常工作,代码仓库中需要包含:

  1. Dockerfile
  2. docker-compose.yml

⚠️ 重要说明:使用场景限制

此 Action 的健康检查机制 (docker ps -lq) 只会检测最后一个被创建的容器

因此,它仅适用于 docker-compose.yml 中只定义了一个服务的场景。

如果在多容器环境中使用,健康检查的结果可能是不准确或错误的,因为它无法保证检查到真正关心的特定容器。

使用示例

name: Deploy Application

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Build and Run Container
        id: build_run_step
        uses: hicane0/action-docker-build-single@v1
        with:
          health-check-delay: '10'

      - name: Print total duration
        run: | 
          echo "🚀 本次构建耗时: ${{ steps.build_run_step.outputs.duration }}"

输入 (Inputs)

参数 (Parameter) 描述 (Description) 是否必需 (Required) 默认值 (Default)
health-check-delay 执行运行状态检查前等待的秒数。 false '10'

输出 (Outputs)

输出 (Output) 描述 (Description)
duration 从开始到完成健康检查的总耗时。

About

简化单容器应用的持续部署流程:一个使用 Docker Compose 构建、运行并健康检查的 GitHub Action。

Resources

License

Stars

Watchers

Forks

Packages

No packages published