務器規划:
角色 |
ip |
loadbalance-master,gitlab |
192.168.31.61 |
loadbalance-master,jenkins |
192.168.31.62 |
harbor |
192.168.31.70 |
配置aliyun鏡像倉庫
用來保存一些學習鏡像
阿里雲鏡像倉庫控制台:https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
1. 登錄阿里雲Docker Registry
$ sudo docker login --username=benjamin7788 registry.cn-hangzhou.aliyuncs.com
用於登錄的用戶名為阿里雲賬號全名,密碼為開通服務時設置的密碼。
您可以在訪問憑證頁面修改憑證密碼。
2. 從Registry中拉取鏡像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/benjamin-learn/[鏡像名稱]:[鏡像版本號]
3. 將鏡像推送到Registry
sudo docker login --username=benjamin7788 registry.cn-hangzhou.aliyuncs.com sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/benjamin-learn/[鏡像名稱]:[鏡像版本號] sudo docker push registry.cn-hangzhou.aliyuncs.com/benjamin-learn/[鏡像名稱]:[鏡像版本號]
實例:
上傳 [root@loadbalancer1 ~]# sudo docker login --username=benjamin7788 registry.cn-hangzhou.aliyuncs.com [root@loadbalancer1 ~]# sudo docker tag 18da462b5ff5 registry.cn-hangzhou.aliyuncs.com/benjamin-learn/gitlab-ce-zh:latest [root@loadbalancer1 ~]# docker push registry.cn-hangzhou.aliyuncs.com/benjamin-learn/gitlab-ce-zh:latest 下載 [root@loadbalancer2 ~]# sudo docker pull registry.cn-hangzhou.aliyuncs.com/benjamin-learn/gitlab-ce-zh:latest
harbor安裝
harbor官方地址:https://github.com/goharbor/harbor
點擊relase選擇要下載的版本
這邊用離線包安裝:
包有點大 600MB 建議上github 下載
安裝docker
略。。。。
安裝docker-compose
由於FQ不便,這邊直接保存了 docker-compose的二進制包
📎docker-compose-Linux-x86_64.zip
unzip docker-compose-Linux-x86_64.zip mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
部署harbor
根據下載好的harbor離線包部署harbor
tar zxvf harbor-offline-installer-v1.9.1.tgz cd harbor sed -i s/reg.mydomain.com/192.168.31.70/g harbor.yml ./prepare ./install.sh
默認端口 80訪問 瀏覽器192.168.31.70 訪問harbor控制台
默認登錄口令 admin/Harbor12345
登錄會有個默認library項目
上傳已經構建的鏡像
在上傳之前需要注意docker默認不支持http的請求方式
除非。。。。。
手動添加ip地址的信任,這樣就可以使用http方式操作私有registry
[root@harbor harbor]# docker login 192.168.31.70 --username=admin --password=Harbor12345 [root@harbor harbor]# docker tag php:v1 192.168.31.70/library/php:v1 [root@harbor harbor]# docker tag nginx:v1 192.168.31.70/library/nginx:v1 [root@harbor harbor]# docker tag tomcat:v1 192.168.31.70/library/tomcat:v1 [root@harbor harbor]# docker push 192.168.31.70/library/php:v1 [root@harbor harbor]# docker push 192.168.31.70/library/nginx:v1 [root@harbor harbor]# docker push 192.168.31.70/library/tomcat:v1
如何pull私有倉庫鏡像
docker login 192.168.31.70 --username=admin --password=Harbor12345 docker pull 192.168.31.70/library/nginx:v1
docker部署gitlab
部署gitlab
docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $PWD/gitlab/config:/etc/gitlab \ -v $PWD/gitlab/logs:/var/log/gitlab \ -v $PWD/gitlab/data:/var/opt/gitlab \ -v /etc/localtime:/etc/localtime \ registry.cn-hangzhou.aliyuncs.com/benjamin-learn/gitlab-ce-zh:latest
通過 192.168.31.61:9999 訪問gitlab
登錄后會提示修改密碼 默認用戶是 root
創建項目,命名為java-demo 其他默認(類型為私有)即可
提交java-demo的代碼
yum install git -y git clone http://192.168.31.61:9999/root/java-demo.git unzip tomcat-java-demo-master.zip cd tomcat-java-demo-master mv * ../java-demo/ && cd ../java-demo git add . git config --global user.email "you@example.com" git config --global user.name "Your Name" git commit -m 'all' git push origin master
docker部署jenkins
📎apache-maven-3.5.0-bin.tar.gz
jdk 官網下載即可。。。包太大 165MB
准備JDK和Maven環境
tar zxvf jdk-8u45-linux-x64.tar.gz mv jdk1.8.0_45 /usr/local/jdk tar zxf apache-maven-3.5.0-bin.tar.gz mv apache-maven-3.5.0 /usr/local/maven # 部署jenkins docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root \ -v /opt/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /usr/local/maven:/usr/local/maven \ -v /usr/local/maven/bin/mvn:/usr/bin/mvn \ -v /usr/local/jdk:/usr/local/jdk \ -v /etc/localtime:/etc/localtime \ --name jenkins registry.cn-hangzhou.aliyuncs.com/benjamin-learn/jenkins:lts
獲取密碼
根據volume 映射規則 -v /opt/jenkins_home:/var/jenkins_home
[root@loadbalancer2 opt]# cat /opt/jenkins_home/secrets/initialAdminPassword 0b23bee2709049cc886f928b81f5b3b7
進入后跳過插件安裝
所有插件都不要勾選,然后點擊安裝
創建一個管理員
admin,保存 來到開始頁面
替換jenkins的插件源
由於默認jenkins的源是國外的下載速度較慢,換成國內的源
cd /opt/jenkins_home/updates/ sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.g oogle.com/https:\/\/www.baidu.com/g' default.json
重啟jenkins容器
有選擇性的安裝插件
manage jenkins---》manage plugin
點擊available 插件 ,分別搜索git pipline兩個插件
創建job
選擇流水線
pipeline腳本
這個腳本完成 工作
- 從 gitlab 拉取代碼
- 使用maven 構建war包
- 構建鏡像
- 部署docker
#!/usr/bin/env groovy def registry = "192.168.31.70" def project = "welcome" def app_name = "demo" def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}" def git_address = "http://192.168.31.61:9999/root/java-demo.git" def docker_registry_auth = "4add8c05-bfdb-48bd-8b74-6b9a2c4b6af6" def git_auth = "7c36059c-cb02-461f-999d-32c713962413" pipeline { agent any stages { stage('拉取代碼'){ steps { checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) } } stage('代碼編譯'){ steps { sh """ JAVA_HOME=/usr/local/jdk PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH mvn clean package -Dmaven.test.skip=true """ } } stage('構建鏡像'){ steps { withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { sh """ echo ' FROM ${registry}/library/tomcat:v1 LABEL maitainer benjamin RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ' > Dockerfile docker build -t ${image_name} . docker login -u ${username} -p '${password}' ${registry} docker push ${image_name}