Jenkins+Docker 镜像自动打包及推送到阿里云容器仓库

阅读时长 7 分钟读完

前言

在开发实践中,自动化是标配,而基于 Docker 的自动化镜像构建能力快速广受青睐。在实际生产场景中,往往需要将构建好的 Docker 镜像推送到阿里云容器镜像服务以方便管理和使用。本文将详细介绍如何实现基于 Jenkins+Docker 的自动化镜像构建和推送,旨在提高开发效率和操作效率。

动手实践

1. 准备工作

在进行实践前,需要先准备好以下工具和资源:

  • Git 用于本地代码管理和版本控制
  • Docker 用于构建容器镜像
  • Jenkins 用于配置和执行自动化打包构建任务
  • 阿里云容器镜像服务,用于存储 Docker 镜像

2. 创建项目

使用 Git 克隆或新建一个前端项目,将代码放到任意目录下,以本文中的“sample-app”项目为例。该项目的代码目录结构如下:

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

其中,src 目录下包含了项目的源代码和资源文件,package.json 是项目的依赖管理文件,webpack.config.js 是项目的构建配置文件。

3. 安装 Docker

安装 Docker 参考官方文档:https://docs.docker.com/get-docker/

4. 构建 Docker 镜像

在项目根目录下新建 Dockerfile 文件,用于构建 Docker 镜像:

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

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

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

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

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

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

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

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

自动化构建脚本通过 Dockerfile 文件产生 Docker 镜像,其中包含了项目代码、应用依赖和运行环境等信息,并在其中声明了容器内部暴露的端口号和启动容器的命令。

使用 Docker CLI 构建 Docker 镜像,命令行如下:

其中,-t 参数指定 Docker 镜像名称及标签,. 表示当前目录下的 Dockerfile 文件。

构建成功时,会在本地 Docker 镜像库中产生一张名为 sample-app 的 Docker 镜像,可以使用以下命令查看:

5. 配置 Jenkins

在 Jenkins 中创建一个新的 Freestyle 项目,填写项目名称和描述,并在项目配置界面中设置 Git 代码源和构建任务等参数。

Git 代码源配置

在项目配置界面中,选择“源码管理”,填写 Git 仓库地址、分支和认证信息等。

构建任务配置

在项目配置界面中,选择“构建环境”,勾选“删除工作空间”和“用 Docker 构建环境”。

在“构建”选项中添加“Execute shell”任务,进行 Docker 镜像构建和推送操作。

下面是一个示例构建命令:

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

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

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

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

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

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

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

该构建任务首先安装了 Docker Compose,根据环境变量 DOCKER_REGISTRYDOCKER_IMAGE_NAME 以及项目构建编号动态计算 Docker 镜像的名称,最后将构建好的 Docker 镜像推送到阿里云镜像服务中。

6. 配置环境变量

在 Jenkins 项目配置界面中,选择“构建环境”,在“环境变量”中添加如下配置:

其中,DOCKER_REGISTRY为阿里云容器镜像服务实例的地址,DOCKER_REGISTRY_USERNAMEDOCKER_REGISTRY_PASSWORD 为阿里云镜像服务的登陆认证信息,DOCKER_IMAGE_NAME为 Docker 镜像的名称。

在实际操作中,DOCKER_REGISTRYDOCKER_REGISTRY_USERNAME 等敏感信息应该存储在 Jenkins 的“凭据”中,以避免在代码仓库和构建任务中对敏感信息明文存储。

7. 前端项目部署

sample-app 构建好的 Docker 镜像推送到阿里云镜像服务后,即可在阿里云的 Kubernetes 集群中部署前端应用。

下面是一个示例的 Kubernetes 配置文件:

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

在 Kubernetes 中,通过创建 Deployment 来管理应用的副本,启动后根据指定的镜像和端口号自动部署容器。

总结

本文详细介绍了如何使用 Jenkins+Docker 完成前端项目的自动化构建和推送,良好的自动化构建能力能够显著提高工作效率和持续交付质量。学习本文所介绍的知识可以促进前端开发者更好地熟悉 Docker 以及应用容器化自动化构建工具,实现更高效的持续交付。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f6ecfcf6b2d6eab3f7a696

纠错
反馈