Docker Node.js 应用 CI/CD 配置指南

Docker Node.js 应用 CI/CD 配置指南

docs Source repo for Docker's Documentation docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

前言

在现代软件开发中,持续集成和持续部署(CI/CD)已成为不可或缺的环节。本文将详细介绍如何为基于 Docker 的 Node.js 应用配置完整的 CI/CD 流程,帮助开发者实现自动化构建、测试和部署。

准备工作

在开始配置 CI/CD 之前,请确保已完成以下准备工作:

  1. 已完成 Node.js 应用的容器化(参考容器化指南)
  2. 拥有代码托管平台账号
  3. 拥有容器镜像仓库账号
  4. 本地开发环境已配置好 Git 和 Docker

CI/CD 流程概述

我们将配置的 CI/CD 流程包含以下关键步骤:

  1. 代码提交触发自动化流程
  2. 构建 Docker 镜像
  3. 运行测试
  4. 推送镜像到容器镜像仓库
  5. 部署到生产环境(可选)

详细配置步骤

第一步:创建代码仓库并配置凭证

  1. 创建新仓库

    • 在代码托管平台创建新仓库
    • 初始化 README 和 .gitignore 文件(推荐包含 node_modules/)
  2. 配置容器镜像仓库凭证

    • 进入仓库设置 > 机密与变量 > 操作
    • 添加仓库变量:DOCKER_USERNAME(值为你的容器镜像仓库 ID)
    • 创建容器镜像仓库个人访问令牌(PAT),权限需包含读写
    • 添加仓库机密:DOCKER_REGISTRY_TOKEN(值为刚创建的 PAT)
  3. 推送本地代码

    git remote set-url origin 你的仓库地址
    git add -A
    git commit -m "初始化提交"
    git push -u origin main
    

第二步:配置工作流文件

在仓库中创建 .github/workflows/main.yml 文件,内容如下:

name: Node.js CI/CD Pipeline

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4
        
      - name: 登录容器镜像仓库
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}

      - name: 设置构建环境
        uses: docker/setup-buildx-action@v3

      - name: 构建测试镜像并运行测试
        uses: docker/build-push-action@v6
        with:
          target: test
          load: true
          tags: ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:test

      - name: 构建生产镜像并推送
        uses: docker/build-push-action@v6
        with:
          platforms: linux/amd64,linux/arm64
          push: true
          target: prod
          tags: |
            ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:latest
            ${{ vars.DOCKER_USERNAME }}/${{ github.event.repository.name }}:${{ github.sha }}

关键配置说明

  1. 触发条件

    • 主分支的推送和拉取请求都会触发流程
    • 可根据需要调整触发条件
  2. 多阶段构建

    • 利用 Dockerfile 中定义的 testprod 阶段
    • 先构建测试镜像并运行测试
    • 测试通过后才构建生产镜像
  3. 多平台支持

    • 同时构建 amd64 和 arm64 架构的镜像
    • 确保应用能在不同硬件架构上运行
  4. 镜像标签策略

    • 使用 latest 标签指向最新稳定版本
    • 使用 Git commit SHA 作为唯一标识符

第三步:运行工作流

  1. 提交并推送工作流文件:

    git add .github/workflows/main.yml
    git commit -m "添加 CI/CD 工作流"
    git push
    
  2. 在代码托管平台的 Actions 选项卡中:

    • 查看工作流执行状态
    • 可点击查看每个步骤的详细日志
  3. 验证结果:

    • 工作流完成后,检查容器镜像仓库
    • 应能看到新推送的镜像

高级配置建议

  1. 缓存优化

    - name: 缓存 Docker 层
      uses: actions/cache@v3
      with:
        path: /tmp/.buildx-cache
        key: ${{ runner.os }}-buildx-${{ github.sha }}
        restore-keys: |
          ${{ runner.os }}-buildx-
    
  2. 多环境部署

    • 可扩展工作流以支持测试/生产环境部署
    • 根据分支或标签决定部署目标
  3. 通知集成

    • 添加 Slack 或邮件通知
    • 在构建失败时发送警报

常见问题排查

  1. 认证失败

    • 检查容器镜像仓库令牌是否具有足够权限
    • 确认机密变量名称拼写正确
  2. 构建超时

    • 优化 Dockerfile 减少构建时间
    • 考虑使用更大的 CI 运行器
  3. 测试失败

    • 检查本地测试是否通过
    • 确保测试环境与 CI 环境一致

总结

本文详细介绍了如何为 Docker 化的 Node.js 应用配置完整的 CI/CD 流程。通过自动化构建、测试和部署,开发者可以:

  • 提高开发效率
  • 确保代码质量
  • 实现快速迭代
  • 保证环境一致性

建议根据项目实际需求调整工作流配置,并定期审查 CI/CD 流程以确保其高效可靠。

docs Source repo for Docker's Documentation docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裘珑鹏Island

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值