【運維技術】JENKINS管道部署容器化初探

目標服務器安裝docker參考官方文檔

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

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

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

目標服務器啓動jenkinsdocker鏡像容器

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

建立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(自行準備好的),添加腳本放置到容器中python

# 拷貝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/
因爲前端項目搭建的比較老,須要的東西很複雜,複雜點:react

  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的腳手架了,因此老項目這麼搞的參考價值不大了。linux

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

配置後端啓動環境

使用編譯完成以後的構建物(就是部署包)在一個本身定義的容器中運行github

配置前端啓動環境鏡像

同上,不過須要進行環境變量的設定,由於配置的獲取須要本身定義docker

自動化運維部署

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

參考內容:

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

  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 .
相關文章
相關標籤/搜索