使用 Docker Compose 部署基于 GitHub Actions 的 CICD

介绍

GitHub Actions 是一种用于自动化软件开发工作流程的工具。与其他 CI / CD 工具不同,它无需签署任何合同或购买许可证即可使用。这意味着您可以完全自定义操作,并在GitHub 的世界范围内共享它们。然而,为了实现可持续的软件开发流程,必须克服产生的挑战,如维护环境。

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序服务的各种方面。它允许您隔离不同组件,同时保持它们高度可重现,并消除了环境和设置方面的潜在问题。

在本文中,我们将学习如何使用 Docker Compose 和 GitHub Actions 部署基于特定存储库的 CICD 系统。我们还将介绍如何使用一个示例项目演示这些概念。

准备工作

在本文中,我们将通过一些步骤在 GitHub 存储库中部署 CICD 系统。要执行这些步骤,您需要以下环境:

  • Docker
  • Docker Compose
  • 一个 GitHub 存储库

如果您还没有 Docker 和 Docker Compose,请在他们的官方网站上找到适合您操作系统的适当版本,并按照说明进行安装。

创建/选择一个您希望在其中部署 CICD 的 GitHub 存储库(请确保它已经包含您的代码)。

配置 Docker Compose

第一步是配置 Docker Compose 文件。在根目录中创建一个名为 docker-compose.yml 的文件,文件内容如下:

-------- -----

---------
  ----
    --------------- ---
    ------ -----------
    ------
      - -----------
    --------
      - --------------
    ------------ ------------
    -------- --- -- ---- ------- -- --- --- ------

请注意,此文件指定了一个服务,该服务由标准 node:latest 映像启动,并运行 npm installnpm run start 命令。

在文件中,指定了一个名为 app 的服务,并使用 container_nameimage 参数定义它。此外,使用 ports 参数将容器绑定到 3000 端口,并使用 volumes 参数将主机上的当前目录(.)挂载为容器的 /usr/src/app 目录。然后,使用 working_dir 参数定义工作目录和 command 参数指定要执行的命令。

创建 GitHub 操作工作流程

现在,我们需要在 GitHub 存储库中创建“actions”文件夹,并在其中创建一个名为 build.yml 的文件。

build.yml 文件中,输入以下代码:

----- ----- --- ------

---
  -----
    ---------
      - ------

-----
  ------

    -------- -------------

    ------
      - ----- ----- --- --- ----
        ----- -------------------

      - ----- ----- --- ------ -----
        ----- ---------------------------
        -----
          --------- --- ------------------------- --
          --------- --- ------------------------- --
          ----------- -----------------------
          ------------- ----

      - ----- ---- ------ -----
        ----- ---------------------------
        -----
          --------- --- ------------------------- --
          --------- --- ------------------------- --
          ----------- -----------------------
          ------------- ----
          ----- ----

请注意,此工作流程在将代码推送到 master 分支时运行,它有一个单独的 job 名称为 build,该 job 将在 ubuntu-latest 上运行,其中包含三个步骤。第一个步骤使用 actions/checkout@v2 检查存储库代码。第二个步骤使用 docker/build-push-action@v2 构建 Docker 镜像。最后一个步骤使用相同的 docker/build-push-action@v2 将 Docker 镜像推送到相关 Docker 镜像仓库。

配置 GitHub 的机密

将密码直接嵌入您的代码是一个可怕的做法。GitHub 提供了一个名为“机密”(secrets)的功能,该功能可让您存储机密数据(例如密码、令牌等),而不必将其嵌入代码中。

为了将 Docker 镜像推送到 Docker 注册表,我们需要将 Docker 注册表的用户名和密码存储在 GitHub 机密中。

如果您还没有设置机密,请在 GitHub 存储库“设置”中进行设置。选择“机密”选项卡,然后添加两个机密 REGISTRY_USERNAMEREGISTRY_PASSWORD,并将其与您的 Docker 注册表用户名和密码相关联。

测试

一旦您完成了上述操作,您就可以尝试将代码推送到 master 分支并观察 CICD 流程。请注意,此时 Docker Compose 文件中只有一个服务,因此该文件非常简单。您可以添加更多服务和更具备由 Docker Compose 所提供的更高级别的配置。

结论

在本文中,我们学习了如何使用 Docker Compose 和 GitHub Actions 创建基于 Docker 的 CICD 系统。我们创建了一个使用 Docker Compose 配置的服务,将其打包到 Docker 映像中,并通过 GitHub Actions 实现了部署和推送 Docker 映像的过程。通过这些步骤,我们可以在几分钟内轻松地将基于特定存储库的 CICD 集成到 GitHub 中。

示例代码可在以下存储库中找到:https://github.com/yourname/your-repo。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6724469d2e7021665e12e010