一、前提是裝好git、SSH、maven插件git
二、jenkins新建一個項目,配好git拉取代碼、maven編譯構建(gradle構建也行,這不重要)docker
三、SSH Server,填寫須要傳輸的jar文件,及腳本(mypush2.sh、Dockerfile)json
Exec command: 執行遠程腳本命令api
cd data/${project} //進入工做目錄bash
chmod 777 mypush2.sh //修改腳本可執行權限
sudo ./mypush2.sh //提高權限執行部署腳本,sudo加不加主要看用戶有無權限app
四、mypush2.sh 構建docker、上傳docker到私服、重啓marathoncurl
#!/bin/bash
set -e
server_url=dockerhub.myco.com //(私服地址,使用的開源的HARBOR)
image_name=projec/myimage:latest //(待構建的鏡像名)mavenDOCKER_FILE=$(pwd)
echo ${DOCKER_FILE}
docker build -t ${server_url}/${image_name} ${DOCKER_FILE} || exit 1
echo "build success"
docker login dockerhub.myco.com -u test -p **** && docker push ${server_url}/${image_name} //配置登陸的用戶名、密碼
echo "push success"
curl -d "force:false" -H "Content-Type:application/json" http://XXX:8080/v2/apps/myapp/restart //調用marathon restart api
echo "deploy marathon success"gradle
首先,執行docker build ,從Dockerfile構建dockerui
其次,執行docker login、docker push ,將鏡像推送到私服
再次,成功上傳私服後,調用marathon API重啓app;
五、Dockerfile 構建docker腳本
FROM dockerhub.myco.com/fund/base-image:latest
MAINTAINER shilin
ENV project_name myproj
COPY ${project_name}-biz/target/${project_name}-biz-exec.jar /project/lib/
WORKDIR /project
##EXPOSE 22882 8282
ENTRYPOINT ["/project/bin/start.sh"]
首先,拉取一個基礎鏡像,將打包好的jar複製到基礎鏡像的lib目錄
其次,設置WORKDIR默認工做目錄,設置ENTRYPOINT,docker啓動時自動啓動的腳本(通常就是配置vm參數啓動jar)!