跳到主要内容

Docker 与GitHub Actions集成

介绍

在现代软件开发中,持续集成和持续交付(CI/CD)是确保代码质量和快速交付的关键。Docker 是一个流行的容器化工具,而 GitHub Actions 是 GitHub 提供的自动化工作流工具。通过将 Docker 与 GitHub Actions 集成,您可以自动化构建、测试和部署 Docker 镜像的过程,从而提高开发效率。

本文将逐步指导您如何将 Docker 与 GitHub Actions 集成,并通过实际案例展示其应用场景。

前提条件

在开始之前,请确保您具备以下条件:

  • 一个 GitHub 仓库。
  • 基本的 Docker 知识。
  • 一个 Docker Hub 账户(用于推送镜像)。

步骤 1:创建 Dockerfile

首先,您需要在项目中创建一个 DockerfileDockerfile 是一个文本文件,包含了一系列指令,用于构建 Docker 镜像。

dockerfile
# 使用官方的 Node.js 镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制项目文件
COPY . .

# 暴露端口
EXPOSE 3000

# 运行应用
CMD ["npm", "start"]

步骤 2:创建 GitHub Actions 工作流

接下来,您需要在 GitHub 仓库中创建一个 GitHub Actions 工作流文件。工作流文件通常位于 .github/workflows/ 目录下。

yaml
name: Docker CI/CD

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

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

- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}

- name: Build Docker image
run: docker build -t your-dockerhub-username/your-repo-name:latest .

- name: Push Docker image
run: docker push your-dockerhub-username/your-repo-name:latest
备注

请将 your-dockerhub-usernameyour-repo-name 替换为您的 Docker Hub 用户名和仓库名称。

步骤 3:配置 GitHub Secrets

为了安全地登录 Docker Hub,您需要在 GitHub 仓库中配置 DOCKER_HUB_USERNAMEDOCKER_HUB_TOKEN 作为 Secrets。

  1. 登录 Docker Hub,生成一个访问令牌。
  2. 在 GitHub 仓库中,导航到 Settings > Secrets > New repository secret
  3. 添加 DOCKER_HUB_USERNAMEDOCKER_HUB_TOKEN

实际案例

假设您正在开发一个 Node.js 应用,并且希望每次将代码推送到 main 分支时自动构建并推送 Docker 镜像到 Docker Hub。通过上述步骤,您可以轻松实现这一目标。

总结

通过将 Docker 与 GitHub Actions 集成,您可以自动化构建、测试和部署 Docker 镜像的过程。这不仅提高了开发效率,还确保了代码的可靠性和一致性。

附加资源

练习

  1. 尝试在您的 GitHub 仓库中实现上述工作流。
  2. 修改 Dockerfile,使其适用于您的项目。
  3. 探索 GitHub Actions 的其他功能,例如自动化测试和部署到云平台。

通过实践这些步骤,您将更好地理解 Docker 与 GitHub Actions 集成的强大功能。