1. 程式人生 > >JENKINS管道部署容器化初探

JENKINS管道部署容器化初探

目標伺服器安裝docker參考官方文件

https://docs.docker.com/install/linux/docker-ce/centos/

(可選)在目標伺服器上安裝docker私服

https://docs.docker.com/registry/

目標伺服器啟動jenkinsdocker映象容器

https://hub.docker.com/r/jenkinsci/blueocean/

建立dockerfile進行後端編譯環境的映象搭建

參考官方教程:https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/
docker hub上的maven官方映象倉庫

docker hub maven official
使用jdk8對應的apline最小化映象:
https://github.com/carlossg/docker-maven/blob/05f4802aa5c253dcf75fe967c6f45b3fb1e2f26e/jdk-8-alpine/Dockerfile
在Dockerfile的同級目錄,將私服的settings.xml(自行準備好的),新增指令碼放置到容器中

# 拷貝settings.xml到docker容器中的目錄/usr/share/maven/ref/
COPY settings.xml /usr/share/maven/ref/

建立dockerfile進行前端編譯環境的映象搭建

參考官方教程:https://jenkins.io/doc/tutorials/build-a-node-js-and-react-app-with-npm/
由於前端專案搭建的比較老,需要的東西很複雜,複雜點:

  1. 編譯環境最初為nodeV6.9.5
  2. 編譯需要先安裝babel-cli
  3. package.json中指定的兩個依賴phontomjs的依賴會自己下載安裝
  4. node-gyp的依賴
  5. node-sass的依賴
  6. 前端打包需要python環境???我想哭
  7. 前端打包需要的資源異常的多,4g記憶體加上4核心cpu

心路歷程:
首先我使用apline-node映象進行編譯,發現跑起來需要python環境
使用apline-python的映象編譯,發現無法進行node環境的安裝
使用解壓方式基於apline-python的方式安裝node,發現node跑步起來,作業系統不相同,依賴的環境也不相同
使用centos7-python的映象發現Dockerfile編寫的指令碼沒有許可權
使用centos7的映象,發現自帶python的環境(欣喜若狂)製作node映象很開心
製作完成之後,通過容器後臺執行,將包拷貝到容器中編譯沒有問題,但是jenkins上run跑的是cat命令,執行就出現問題
最後最後我奔潰了......我覺得再這麼搞下去沒有價值,所以我決定放棄,因為現在我們專案決定前端使用antd-pro的腳手架了,所以老專案這麼搞的參考價值不大了。

綜合上述所述我決定放棄前端編譯環境的搭建和學習!!!

配置後端啟動環境

使用編譯完成之後的構建物(就是部署包)在一個自己定義的容器中執行

配置前端啟動環境映象

同上,不過需要進行環境變數的設定,因為配置的獲取需要自己定義

自動化運維部署

上平臺:我所知道的平臺K8s、容器化管理工具:RancherMaven觸發構建後能夠直接推送到倉庫,然後倉庫直接啟動即可。可以通過jenkins直接啟動

參考內容:

在這些操作中,我學會了最有用的幾個命令:

  1. docker所有的容器後臺啟動命令
docker run -d <image-name> tail -f /dev/null
  1. docker 刪除未執行的容器
docker container prune
  1. docker 刪除映象
docker rmi <imageId> <imageId> <imageId> <imageId> 
  1. 進入docker容器
docker exec -it <containerId> /bin/bash
  1. 通過Dockerfile編譯映象
docker build -t mynode:1.0 .