使用gitlab+jenkins+nexus拉取springcloud並根據不同模塊構建docker鏡像,並推送到nexus里的docker倉庫


1.安裝gitlab
詳情看:https://www.cnblogs.com/sanduzxcvbnm/p/13023373.html
安裝好gitlab后,然后創建一個普通用戶,編輯用戶,給用戶設置密碼,添加本機ssh密鑰到gitlab里,使用普通用戶上傳代碼

要使用git開頭的地址,不使用http開頭的地址

可以先把原有的遠程倉庫名稱修改成old_origin,然后添加這個新的遠程倉庫

2.安裝jenkins
詳情看:https://www.cnblogs.com/sanduzxcvbnm/p/11341622.html
修改清華大學jenkis地址,更新到最新版本,安裝一些插件:docker,gitlab,maven相關的
清華大學jenkis地址,插件管理-高級
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3.安裝nexus
詳情看:
(1)安裝:https://www.cnblogs.com/sanduzxcvbnm/p/13098712.html
(2)配置docker鏡像倉庫:https://www.cnblogs.com/sanduzxcvbnm/p/13099635.html

4.配置jenkins

(1)新建item
輸入名稱,選擇第一個選項:自由風格,提交
(2)配置

(3)配置gitlab拉取代碼

(4)配置maven編譯打包

(5)配置docker
docker開啟遠程訪問:

# vim /lib/systemd/system/docker.service
# 在ExecStar開頭的這一行中添加上 -H tcp://0.0.0.0:2375

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
或者是:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

systemctl daemon-reload
systemctl restart docker

jenkins->配置->cloud

(6)項目結構

(7)springcloud項目修改
在模塊的根目錄下創建一個Dockerfile文件,並且復制粘貼上啟動用的shell腳本(可以使用原來的,不過需要修改,去掉開頭的nohup,java命令使用相對路徑和最后的&)

不過這樣會有個問題,生成的日志是在容器中,只能登陸到容器中才能查看日志,無法通過使用命令docker logs 進行查看
docker logs只能記錄輸出到終端的內容(stdout或者stderr),輸出到文件的無法顯示

(8)把容器中生成的日志文件掛載到宿主機上,方便統一管理
這里采用的是掛載數據卷的方式,不能采用掛載宿主機目錄的方式(會報要執行的shell腳本文件找不到的錯誤)

# 掛在宿主機目錄的方式,---不可行-----
[root@worker ~]# docker run -d -p 8761:8761 -v /var/log/eureka:/opt/hkd-cloud/hkd-eureka idocker.io/hkd-eureka:1.1
b2ccb868d4a8abc02999a0cdcec42268ab353fd8d8a0ae4b577ebf05795e1a41
[root@worker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@worker ~]# docker logs -f b2ccb868d4a8abc02999a0cdcec42268ab353fd8d8a0ae4b577ebf05795e1a41
/bin/sh: can't open 'hkd-eureka.sh': No such file or directory
[root@worker ~]# docker volume create my-vol # 創建數據卷,默認路徑:/var/lib/docker/volumes
[root@worker ~]# docker run -d -p 8761:8761 --mount source=my-vol,target=/opt/hkd-cloud/hkd-eureka idocker.io/hkd-eureka:1.1 # 可以掛載成只讀的文件,ro
d113c6d2db8ef5622e67cc612f2b106cfd3c9f050e83f935e35d4910f3d9c46b
[root@worker ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
d113c6d2db8e        idocker.io/hkd-eureka:1.1   "/bin/sh hkd-eureka.…"   4 seconds ago       Up 3 seconds        0.0.0.0:8761->8761/tcp   charming_lamarr
[root@worker volumes]# pwd
/var/lib/docker/volumes
[root@worker volumes]# cd my-vol/
[root@worker my-vol]# ls
_data
[root@worker my-vol]# cd _data/
[root@worker _data]# ls
hkd-eureka-1.0.jar  hkd-eureka.out  hkd-eureka.sh

思考:
可以這樣處理:Dockerfile文件中VOLUME掛載到logs目錄,同時shell腳本中輸出日志到這個logs目錄中,運行容器掛載的時候這個目錄采用只讀的方式

docker run -d -p 8761:8761 -v my-vol:/opt/hkd-cloud/hkd-eureka/logs idocker.io/hkd-eureka:1.1

這樣一來,既能實現共享容器中的日志到宿主機,也增加了安全性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM