docker+gitlab+jenkins+sonarqube实现代码持续集成1、docker安装

1)、删除老旧版本docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2)、安装工具包并设置存储库

安装工具包
yum install -y yum-utils
设置存储库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3)、安装docker引擎

yum install docker-ce docker-ce-cli containerd.io
2、docker使用

1)、docker基本命令

启动docker
systemctl start docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker

2)、设置docker开机启动

systemctl enable docker

3)、设置阿里云镜像仓库

阿里云镜像访问地址

gitlab 更新配置文件_ci

镜像设置执行代码:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["设置自己的镜像服务器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、docker安装gitlab

1)、访问docker hub搜索gitlabdocker镜像gitlab镜像地址 2)、本地安装gitlab镜像 2.1)、拉取gitlab镜像

# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本(根据自己选择版本填写)
$ docker pull gitlab/gitlab-ce

2.2)、运行gitlab镜像

$ docker run -d \
       -p 8443:443 \
	   -p 8090:8090\
	   -p 8022:22 \
	   --restart always \
	   --name gitlab \
	   -v /usr/local/gitlab/etc:/etc/gitlab \
	   -v /usr/local/gitlab/log:/var/log/gitlab \
	   -v /usr/local/gitlab/data:/var/opt/gitlab \
	   --privileged=true gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射(-p 8443:443 把容器中应用的端口443映射为外部的8443端口,-p 8090:8090把容器中应用的端口8090映射为外部的8090端口,-p 8022:22把容器中应用的端口22映射为外部的8022端口)
# --name:命名容器名称
#--restart always:代表服务器重启镜像自动启动
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

实时日志查看
docker logs -f --tail=10 gitlab
-f : 查看实时日志
--tail=10 : 查看最后的10条日志。
gitlab: 容器名称

2.3)、配置gitlab访问地址

#进入容器
docker exec -it gitlab bash
#修改gitlab.rb文件
cd /etc/gitlab
vi gitlab.rb
#修改ip和端口
使用/来查找关键字
#在gitlab创建项目时候http地址的host(加端口号)
external_url 'http://xx.xx.xx.xx'
#在gitlab创建项目时候ssh地址的host
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'(不用添加端口)
# docker run 的时候我们把22端口映射为外部的8022了,这里修改下
gitlab_rails['gitlab_shell_ssh_port'] = 8022
# gitlab应用配置
gitlab-ctl reconfigure
# 修改port
# 文件路径地址
cd /opt/gitlab/embedded/service/gitlab-rails/config
vi gitlab.yml
# 使用/查找port关键字
# 修改默认端口为8090端口
# 容器内重启gitlab
# 命令:gitlab-ctl restart
# 退出容器
# 命令:exit
# 访问地址:http://192.168.153.128:8090/users/sign_in

2.4)、如果进入gitlab没有初始化密码,这样重置密码

# 重置密码命令
#进入容器
docker exec -it gitlab bash
# 输入命令
gitlab-rails console -e production

user=User.where(id:1).first
user.password='1qaz.2wsx'
user.save!
exit
exit

gitlab 更新配置文件_ci_02

4、docker安装jenkins

docker hub搜索jenkins

拉取jenkins镜像
docker pull jenkins/jenkins
jenkins官网查看安装命令
docker run \
  -u root \
  -d \
  --restart always \
  --name jenkins \
  -p 9000:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --privileged=true jenkins/jenkins
jenkins访问地址:
http://192.168.153.128:9000/
进入jenkins容器
docker exec -it jenkins bash
查看首次登陆密码
cat /var/jenkins_home/secrets/initialAdminPassword

gitlab 更新配置文件_docker_03

5、docker安装sonarqube

1)、安装sonarqube必选先安装数据库,sonarqube支持三种数据库(sqlserver,Oracle,postgres),此处选用postgres

1.1)、docker安装postgres

拉取postgres数据库镜像文件
docker pull postgres
使用docker运行postgres数据库
docker run --name postgres -d -p 5432:5432 \
-v /home/sonar/postgres/postgresql:/var/lib/postgresql \
-v /home/sonar/postgres/data:/var/lib/postgresql/data \
-v /etc/localtime:/etc/localtime:ro \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=sonar \
-e POSTGRES_DB=sonar \
-e TZ=Asia/Shanghai \
--restart always \
--privileged=true \
postgres

-p 5432:5432:将容器 5432 映射到宿主机端口 5432
-v /home/sonar/postgres/postgresql:/var/lib/postgresql:将容器下的 /var/lib/postgresql 挂载到宿主机 /home/sonar/postgres/postgresql
-v /etc/localtime:/etc/localtime:ro:设置容器与宿主机时间一致
--e POSTGRES_USER=sonar:设置数据库用户名
-e POSTGRES_PASSWORD=sonar:设置数据库密码
-e POSTGRES_DB=sonar:新建db
-e TZ=Asia/Shanghai:设置时区
--restart always:容器退出时总是重启
--privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
docker hub搜索sonarqube
使用命令拉取sonarqube镜像:
docker pull sonarqube
docker 启动sonarqube

docker run \
  -d \
  --name sonarqube \
  -p 9090:9000 \
  --link postgres \
  -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar \
  -e SONARQUBE_JDBC_USERNAME=sonar \
  -e SONARQUBE_JDBC_PASSWORD=sonar \
  --privileged=true \
  --restart always \
  -v sonarqube_conf:/opt/sonarqube/conf \
  -v sonarqube_extensions:/opt/sonarqube/extensions \
  -v sonarqube_logs:/opt/sonarqube/logs \
  -v sonarqube_data:/opt/sonarqube/data \
  sonarqube

--name sonarqube:镜像名称
-p 9090:9000:将容器 9000映射到宿主机端口 9090
-v sonarqube_conf:/opt/sonarqube/conf \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
-v sonarqube_data:/opt/sonarqube/data \:将容器下的目录挂载到宿主机
--link postgres:连接到容器
-e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar:设置连接驱动地址
-e SONARQUBE_JDBC_USERNAME=sonar:设置数据库用户名
-e SONARQUBE_JDBC_PASSWORD=sonar:设置数据库密码
--restart always:容器退出时总是重启
--privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法

gitlab 更新配置文件_gitlab 更新配置文件_04