Docker Jenkins 多模块部署
介绍
Docker 是一个开源的容器化平台,可以帮助开发人员将应用程序及其相关依赖项打包为一个独立的容器,并在任何环境中运行。Jenkins 是一个流行的持续集成和持续部署工具,可以自动化构建、测试和部署应用程序。
本文将介绍如何使用 Docker 和 Jenkins 实现多模块部署。我们将创建一个简单的多模块 Java Web 应用程序,并使用 Jenkins 将其构建、测试和部署到 Docker 容器中。
准备工作
在开始之前,我们需要安装并配置以下工具:
- Docker:用于构建和运行容器。
- Jenkins:用于自动化构建、测试和部署应用程序。
请确保已正确安装并配置这些工具。
创建多模块 Java Web 应用程序
我们将创建一个简单的多模块 Java Web 应用程序,其中包含以下模块:
- web:包含 Web 应用程序的前端代码。
- service:包含 Web 应用程序的后端服务代码。
- database:包含 Web 应用程序的数据库代码。
首先,创建一个名为 multi-module-app
的项目文件夹,并在该文件夹中创建以下结构:
multi-module-app
├── web
│ └── index.html
├── service
│ └── service.py
└── database
└── schema.sql
index.html
是一个简单的 HTML 文件,service.py
是一个 Python 脚本,schema.sql
是一个包含数据库模式的 SQL 文件。
创建 Jenkins 任务
- 打开 Jenkins 控制台,并创建一个新的自由风格的软件项目。
- 在源代码管理部分,选择你的代码仓库,并配置 Jenkins 从代码仓库中拉取代码。
- 在构建部分,点击 "增加构建步骤",选择 "执行 shell"。
- 在 "执行 shell" 步骤中,输入以下命令以构建和测试应用程序:
```shell
# 构建和测试 web 模块
cd web
npm install
npm test
# 构建和测试 service 模块
cd ../service
python service.py test
# 构建和测试 database 模块
cd ../database
mysql -u root -p < schema.sql
Docker 镜像和容器配置
接下来,我们将使用 Docker 构建和运行应用程序的镜像和容器。
- 在 Jenkins 任务配置中,点击 "增加构建步骤",选择 "Docker Build and Publish"。
- 在 "Docker Build and Publish" 步骤中,配置 Docker 镜像的名称和标签。
- 在 "Docker Build and Publish" 步骤的 "Dockerfile" 字段中,输入以下内容:
```dockerfile
# 使用一个基础镜像
FROM ubuntu:latest
# 安装必要的软件包
RUN apt-get update
RUN apt-get install -y nginx python3 mysql-client
# 将应用程序复制到容器中
COPY . /app
# 设置工作目录
WORKDIR /app
# 运行构建和测试命令
RUN cd web && npm install && npm test
RUN cd service && python service.py test
RUN cd database && mysql -u root -p < schema.sql
# 暴露端口
EXPOSE 80
# 启动应用程序
CMD ["nginx", "-g", "daemon off;"]
这个 Dockerfile 使用了一个基础镜像,并安装了必要的软件包。然后,将应用程序复制到容器中,并设置工作目录。接下来,运行构建和测试命令,最后暴露端口并启动应用程序。
构建和部署
现在,我们已经完成了 Jenkins 任务和 Docker 镜像的配置。我们可以进行构建和部署应用程序的操作了。
- 在 Jenkins 任务配置中,点击 "保存"。
- 返回 Jenkins 控制台,并点击 "立即构建"。
- Jenkins 将拉取代码,构建和测试应用程序,并使用 Docker 构建应用程序的镜像。
- 一旦构建