使用docker-compose快速部署cicd环境
使用docker-compose快速部署cicd环境
安装docker
添加docker-ce源
1wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
1yum -y install docker-ce
配置docker加速
1mkdir /etc/docker
2cat > /etc/docker/daemon.json <<EOF
3{
4 "registry-mirrors": [
5 "https://mciwm180.mirror.aliyuncs.com",
6 "https://docker.mirrors.ustc.edu.cn/",
7 "https://registry.docker-cn.com"
8 ],
9 "exec-opts": ["native.cgroupdriver=systemd"]
10}
11EOF
运行docker
1systemctl enable --now docker
安装docker-compose
安装docker-compose
1yum -y install epel-release
2yum -y install docker-compose
检查安装
1docker-compose --version
2docker-compose version 1.18.0, build 8dd22a9
持续集成配置
这里主要是由Gitlab+Jenkins+SonarQube集成的一个示例,当然你可以把Harbor仓库什么的都集成在里面也没有问题
创建docker-compose.yaml文件
1version: "3.7"
2services:
3 jenkins:
4 image: jenkins/jenkins:lts
5 container_name: jenkins
6 restart: always
7 volumes:
8 - ./jenkins/jenkins_home:/var/jenkins_home:rw
9 ports:
10 - "8080:8080"
11 networks:
12 - net-cicd
13 gitlab-ce:
14 image: gitlab/gitlab-ce:12.0.0-ce.0
15 container_name: gitlab-ce
16 restart: always
17 environment:
18 GITLAB_OMNIBUS_CONFIG: |
19 external_url 'http://git.hzde.com:9080'
20 gitlab_rails['gitlab_shell_ssh_port'] = 9022
21 volumes:
22 - ./gitlab/config:/etc/gitlab
23 - ./gitlab/logs:/var/log/gitlab
24 - ./gitlab/data:/var/opt/gitlab
25 ports:
26 - "9443:443"
27 - "9080:9080"
28 - "9022:22"
29 networks:
30 - net-cicd
31 sonarqube:
32 image: sonarqube:lts
33 container_name: sonarqube
34 restart: always
35 deploy:
36 resources:
37 limits:
38 cpus: '0.50'
39 memory: 1Gi
40 reservations:
41 cpus: '0.25'
42 memory: 512Mi
43 environment:
44 sonar.jdbc.username: sonar
45 sonar.jdbc.password: sonar
46 sonar.jdbc.url: jdbc:postgresql://postgresql/sonar
47 volumes:
48 - ./sonarqube/conf:/opt/sonarqube/conf
49 - ./sonarqube/data:/opt/sonarqube/data
50 - ./sonarqube/logs:/opt/sonarqube/logs
51 - ./sonarqube/extensions:/opt/sonarqube/extensions
52 ports:
53 - "9000:9000"
54 depends_on:
55 - postgresql
56 networks:
57 - net-cicd
58 postgresql:
59 image: postgres:9.6
60 container_name: postgresql
61 restart: always
62 environment:
63 POSTGRES_USER: sonar
64 POSTGRES_PASSWORD: sonar
65 POSTGRES_DB: sonar
66 volumes:
67 - ./postgresql/data:/var/lib/postgresql/data:rw
68 ports:
69 - "5432:5432"
70 networks:
71 - net-cicd
72networks:
73 net-cicd:
在docker-compose.yaml同级的目录建立一下目录
/ostgresql/datajenkins持久化数据 gitlab/config gitlab配置目录 gitlab/logs gitlab日志目录 gitlab/data gitlab数据目录 sonarqube/conf sonarqube/data sonarqube/logs sonarqube/extensions postgresql/data
1mkdir -p jenkins/jenkins_home
2mkdir -p gitlab/{config,logs,data}
3mkdir -p sonarqube/{conf,data,logs,extensions}
4mkdir -p postgresql/data
建立完成后的目录结构如下
1tree
2.
3├── docker-compose.yaml
4├── gitlab
5│ ├── config
6│ ├── data
7│ └── logs
8├── jenkins
9│ └── jenkins_home
10├── postgresql
11│ └── data
12└── sonarqube
13 ├── conf
14 ├── data
15 ├── extensions
16 └── logs
启动docker-compose
1docker-compose up -d
第一次启动的过程会比较慢,因为需要从Docker Hub下载镜像
访问jenkins
打开浏览器,输入:http://localhost:8080进行访问,初始密码可以通过docker-compose logs -f jenkins
进行查看,或者直接cat jenkins/jenkins_home/secrets/initialAdminPassword
进行查看。
选择插件进行安装,新手推荐选择推荐插件。
插件安装完会提示创建一个管理员账户,创建完账户并使用管理员账户登录进入主界面。
访问gitlab
先配置一条hosts文件127.0.0.1 git.hzde.com
然后打开浏览器,访问:http://git.hzde.com:9080,第一次访问的时候,需要设置root账户的密码,修改完成之后,使用该密码进行登录;然后创建项目,用户以及用户组等操作。
访问sonarqube
打开浏览器,访问:http://localhost:9000
点击左侧的login进行登录,默认用户名和密码为admin
,admin
然后可以进入Administration-Marketplace应用商店安装中文语言包,安装插件等操作。
部署项目
环境配置好之后,就可以部署项目了,将代码存入到gitlab上,在gitlab上面设置好触发Jenkins构建的webhook,之后每次提交代码就会触发构建了。
在jenkins上配置好SonarQube的server以及SonarQube Scanner。
Jenkinsfile中添加SonarQube检测项。
- 原文作者:黄忠德
- 原文链接:https://huangzhongde.cn/post/2020-02-26-using-docker-compose-deploy-cicd/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。