Jenkins與Docker的自動化CI/CD實戰(一)

Gffxhu發表於2019-12-04

(一)

以下全部操作都是同一臺主機,規格:4核8G 

以下全部使用root使用者進行操作,都在同一臺主機進行的。

1、Docker的安裝

yum install -y yum-utils device-mapper-persistent-data lvm2
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 
yum makecache fast
yum -y install docker-ce-18.06.1.ce-3.el7 
systemctl enable docker 
systemctl start docker 
docker --version複製程式碼

2、Docker加速

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://vg0bksne.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
# 配置網易的加速。。。複製程式碼

3、將docker的harbor寫好

vim /etc/docker/daemon.json加上這段,這段就是為了和harbor通訊用的。
"insecure-registries":["172.16.6.110:8888"]
加完後:
{
  "registry-mirrors": ["https://vg0bksne.mirror.aliyuncs.com"],
"insecure-registries":["172.16.6.158:8888"]
}
重啟一下docker
systemctl restart docker複製程式碼

4、Jenkins安裝

(1)這張安裝會導致不能使用本地docker
# docker 安裝Jenkins,
# 掛載 目錄/data/jenkins需要chown -R 1000.1000 /data/jenkins
docker run -itd --name jenkins -p 8080:8080 -v /data/jenkins:/var/jenkins_home  jenkins/jenkins:lts
#mvn 可以掛載; jvm 可以掛載。


(2)  為了解決無法使用本地docker的問題
# Jenkins的dockerfile
cat > Dockerfile.yml << EOF
FROM jenkins/jenkins:2.138.4
USER root
ARG dockerGid=994
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y libltdl7 && apt-get update
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
EOF

# 將這個Jenkins做成映象
docker build -f Dockerfile.yml -t jenkins:test .

# 當然就是啟動啦...
docker run -itd -p 8080:8080 --name jenkins \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/mv:/usr/bin/mv \
-v /usr/java/jdk1.8.0_231/bin/java:/usr/bin/jdk1.8.0_191/java \
-v /usr/java/jdk1.8.0_231:/var/local/jdk1.8.0_191 \
-v /usr/local/apache-maven-3.6.3:/var/local/apache-maven-3.6.0 \
-v /data/jenkins:/var/jenkins_home jenkins:test

備註:因官方版的Jenkins使用者是jenkins,沒有root,且不能用主機的docker命令
因此,這樣改動後,方便於直接在同一臺機器上直接構建成映象,然後進行推送到harbor中。
當然,你也可以直接用一臺機器作為docker的,然後用Jenkins的外掛進行遠端打映象(不過需要遠端傳war這些包)複製程式碼

5、gitlab

#docker 安裝gitlab:
docker pull beginor/gitlab-ce:11.0.1-ce.0

------------------------------------------
# 用於資料夾的掛載
mkdir -p /data/gitlab/etc && mkdir -p /data/gitlab/log && mkdir -p /data/gitlab/data
------------------------------------------

docker run \
    --detach \
    --publish 9090:9090 \
    --name gitlab \
    --restart unless-stopped \
    -v /data/gitlab/etc:/etc/gitlab \
    -v /data/gitlab/log:/var/log/gitlab \
    -v /data/gitlab/data:/var/opt/gitlab \
    beginor/gitlab-ce:11.0.1-ce.0

先這樣用docker run一下,等啟動後再修改配置。
注意,等gitlab完全啟動後再修改配置,可以看日誌是否啟動完成。

後面就修改這個配置:
vim /data/gitlab/etc/gitlab.rb
# 修改成這兩個:
external_url 'http:172.16.6.110//:9090'複製程式碼
nginx['listen_port'] = 9090

# 用於檢視gitlab 容器情況
docker logs -t -f 容器id複製程式碼

6、Docker Harbor的安裝

(1)安裝Docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
複製程式碼

(2)指令碼安裝docker-harbor

wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.0.tgz 複製程式碼

tar -zxvf harbor-online-installer-v1.8.0.tgz 複製程式碼

cat harbor.yml |grep hostname複製程式碼

修改相應的引數,主要就是這個hostname,改成你的ip就行了。

然後在目錄下,直接執行

sh install.sh複製程式碼

等待安裝完成就行了。

到此,安裝部分就告一段落。。。

全部重要的元件都在一臺上完成了。


相關文章