Docker + Jenkins + Gitlab+Harbor 自动化构建部署的详细步骤及教学
时间: 2023-07-31 07:09:20 浏览: 106
下面是使用 Docker + Jenkins + Gitlab+Harbor 实现自动化构建部署的详细步骤及教学。
1. 安装 Docker
首先需要安装 Docker,可以参考 Docker 官方文档进行安装。
2. 安装 Jenkins
Jenkins 是持续集成和持续交付工具,可以在官网下载 Jenkins 安装包,也可以使用 Docker 安装 Jenkins。
使用 Docker 安装 Jenkins 可以使用以下命令:
```
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
```
其中 `-d` 表示在后台运行,`-p` 表示将容器的端口映射到宿主机上,`-v` 表示将 Jenkins 的数据存储在本地。
3. 安装 Gitlab
Gitlab 是代码托管平台,可以在官网下载 Gitlab 安装包,也可以使用 Docker 安装 Gitlab。
使用 Docker 安装 Gitlab 可以使用以下命令:
```
docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
```
其中 `--hostname` 表示 Gitlab 的域名,`--publish` 表示将容器的端口映射到宿主机上,`--name` 表示给容器命名,`--volume` 表示将 Gitlab 的数据存储在本地。
4. 安装 Harbor
Harbor 是 Docker 镜像仓库,可以在官网下载 Harbor 安装包,也可以使用 Docker 安装 Harbor。
使用 Docker 安装 Harbor 可以使用以下命令:
```
docker run -d -p 80:80 -p 443:443 --name harbor --restart always -v /data/harbor:/data harbor/harbor:v2.1.4
```
其中 `-p` 表示将容器的端口映射到宿主机上,`--name` 表示给容器命名,`-v` 表示将 Harbor 的数据存储在本地。在上面的命令中,Harbor 的数据存储在 `/data/harbor` 目录下。
5. 配置 Gitlab
登录 Gitlab 后,在项目中创建一个 `.gitlab-ci.yml` 文件,用于编写 CI/CD 流程的配置。
下面是一个简单的示例:
```
image: docker:latest
services:
- docker:dind
stages:
- build
- test
- deploy
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
test:
stage: test
script:
- docker run --rm $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA npm test
deploy:
stage: deploy
script:
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
- docker push $CI_REGISTRY_IMAGE:latest
```
其中 `image` 表示使用的 Docker 镜像,`services` 表示服务容器,`stages` 表示流程的阶段。
在 `build` 阶段中,使用 Docker 构建镜像,并将镜像推送到 Harbor 中。
在 `test` 阶段中,使用 Docker 运行镜像,并运行测试。
在 `deploy` 阶段中,从 Harbor 中拉取最新的镜像,并使用 `docker tag` 命令将其打上 `latest` 标签,然后将镜像推送到 Harbor 中。
6. 配置 Jenkins
登录 Jenkins 后,在插件管理中安装 Gitlab、Docker、Harbor 插件。
然后创建一个新的 Jenkins 任务,选择 Gitlab 项目,并配置 Gitlab 的 Webhook,以触发 Jenkins 的构建。
在任务的配置中,选择 Gitlab 作为版本控制工具,配置 Gitlab 仓库的地址和访问凭证。
在构建环境中,选择 Docker,并配置 Docker 的镜像仓库地址和凭证。
在构建步骤中,选择执行 Shell 命令,并编写构建脚本。
下面是一个简单的示例:
```
#!/bin/bash
docker build -t $DOCKER_REGISTRY_IMAGE:$BUILD_NUMBER .
docker push $DOCKER_REGISTRY_IMAGE:$BUILD_NUMBER
docker tag $DOCKER_REGISTRY_IMAGE:$BUILD_NUMBER $DOCKER_REGISTRY_IMAGE:latest
docker push $DOCKER_REGISTRY_IMAGE:latest
```
其中 `$BUILD_NUMBER` 表示 Jenkins 的构建号,`$DOCKER_REGISTRY_IMAGE` 表示 Docker 镜像仓库的地址。
7. 测试
在 Gitlab 中进行代码提交,触发 Jenkins 的构建流程。可以在 Jenkins 的控制台中查看构建日志,查看构建是否成功。可以在 Harbor 的镜像仓库中查看构建的镜像是否成功推送。
8. 总结
使用 Docker + Jenkins + Gitlab+Harbor 实现自动化构建部署,可以提高软件开发的效率和质量,减少手动操作带来的错误。这里介绍了一个简单的示例,实际的项目中需要根据实际情况进行配置和优化。
相关推荐
















