jenkins配置

docker-compose編排nginx+tomcat+fastdfs+mysql

[docker compose 部署nginx-tomcat平臺(tái)}(https://blog.51cto.com/1014810/2114707
)

Jenkins-job之間依賴關(guān)系配置

svn,git分支版本發(fā)布

Jenkins+svn設(shè)置分支和版本號部署
jenkins選擇分支構(gòu)建

svn://****/$branch@$revision

配置git

用ssh拉取git源碼 先在gitlab上配置好生成的公鑰,然后在jenkin站點(diǎn)的憑據(jù)-系統(tǒng)-添加域 配置域的憑據(jù),配置好憑據(jù)用戶 授帕,選擇SSH Username with private key 然后設(shè)置與公鑰對應(yīng)的私鑰 Private Key 然后保存即可

jenkins credentials & git ssh 認(rèn)證

配置與jenkins在同一臺(tái)服務(wù)器上tomcat

### 用于tomcat7自動(dòng)部署的管理用戶必須具有manager-script角色,manager-gui角色是不夠的粪摘,不然會(huì)有錯(cuò)誤出現(xiàn):
The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
在/etc/tomcat7/tomcat-users.xml文件中為管理用戶添加manager-script角色即可响驴。


<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-script"/>
<user username="tomcat" password="pwd" roles="tomcat,manager-gui,admin-gui,admin-script,manager-script"/>

username 和 password 則是登陸tomcat管理界面需要的賬號密碼擅笔。


  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-status" />
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="deploy" password="tomcat" roles="manager-gui,manager-script,manager-status" />


###   如果還不行
/webapps/manager/META_INF/context.xml文件舆乔,將文件中對訪問的來源受限設(shè)置注釋
<Context antiResourceLocking="false" privileged="true" > <!--注釋這里磨德,去除對訪問權(quán)限的設(shè)置 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --></Context>




# deploy war to a container配置
WAR/EAR files : target/***.war
Context path : projectname  (在tomcat的webapp下的目錄)
Containers : Tomcat URL  請求路徑帶端口


原文地址:https://blog.csdn.net/jay_1989/article/details/52861620

參考:
GitLab配置ssh key

Linux配置SSH公鑰認(rèn)證與Jenkins遠(yuǎn)程登錄進(jìn)行自動(dòng)發(fā)布
jenkins SSH登錄 Git配置(通過eclipse生成SSH 密鑰)

根據(jù)版本更新發(fā)布

安裝gitlab-plugin      ( gitlab hook plugin這個(gè)不行)
在  構(gòu)建觸發(fā)器中  先擇Build when a change is pushed to GitLab. GitLab webhook URL: http://ip/jenkins/project/name


在gitlab該project界面點(diǎn)擊side bar最下面的settings圖標(biāo) *  Integrations Settings  然后再點(diǎn)擊側(cè)邊欄中的“web Hooks”缘回,在“URL”一欄輸入在第5步驟中的(3)中的URL,還要點(diǎn)開右下角的 高級:隨后點(diǎn)擊右下角的 Generate 按鈕典挑,生成 Secret token; 在 Secret Token 一欄中輸入生成的 Secret token;然后測試成功就說明gitlab和jenkins關(guān)聯(lián)成功
在高級里面的Allowed branches   選擇Filter branches by name      Include  master   允許master分支上的變化觸發(fā)構(gòu)建


jenkins實(shí)現(xiàn)git提交后自動(dòng)化構(gòu)建
http://www.reibang.com/p/eeb15a408d88

shell發(fā)布tomcat

#!/bin/bash
export BUILD_ID=dontkillme #隨便寫
export JAVA_HOME=/usr/java/jdk1.7.0_80 #tomcat需要的jdk
#
# __auther__: zhan
# __ time __: 2018年08月16日 22:00:00
# __ 作用 __: 用于jenkins build完成之后的最后操作shell腳本
# __ 使用 __: 定義jenkins
#
#---------------------------------- 文件路徑配置 ----------------------------------
#tomcat服務(wù)器獲取系統(tǒng)時(shí)間以 2018-08-16 顯示
timedate=$(date +%Y-%m-%d)
#client服務(wù)器tomcat安裝路徑
TOMCAT_HOME=/web/tomcat-jih-8080
#tomcat服務(wù)器備份文件存放路徑
BACKUP_HOME=$TOMCAT_HOME/bak
#tomcat服務(wù)器war包服務(wù)器更新包名稱
WAR__NAME=yk
#tomcat服務(wù)器最新版本文件存放路徑
PUBLISHVERSION_HOME=/web/appwar/yk
#client服務(wù)器以時(shí)間的方式備份發(fā)布前的項(xiàng)目文件目錄名稱
BACK_TIME=`date +%Y%m%d%H%M`
#tomcat服務(wù)器項(xiàng)目發(fā)布后的路徑
PUBLISHED_PATH=$TOMCAT_HOME/webapps/$WAR__NAME

#war包遠(yuǎn)程jenkins服務(wù)器項(xiàng)目配置文件
PROJECT_CONFIG_FILE=/web/appwar/yk/classes
#war包遠(yuǎn)程jenkins服務(wù)器地址
WAR_SERVER_IP='192.168.2.20'
#war包遠(yuǎn)程jenkins服務(wù)器存放路徑
WAR_SERVER_HOME='/web/appwar/yk'


#---------------------- 遠(yuǎn)程復(fù)制war包 [需要SSH免密碼登陸設(shè)置]-------------------
#復(fù)制遠(yuǎn)程jenkins服務(wù)器war包到tomcat服務(wù)器上最新版本文件存放路徑
scp -r $WAR_SERVER_IP:/$WAR_SERVER_HOME/$WAR__NAME.war $PUBLISHVERSION_HOME


#--------------------------------- tomcat服務(wù)器備份文件 -------------------------------------
echo go to $BACKUP_HOME
cd $BACKUP_HOME
echo backup time $BACK_TIME
/bin/mkdir $BACK_TIME
echo go to $BACK_TIME
cd $BACK_TIME
echo "backup path" 
pwd
echo "start copy project files"
#復(fù)制項(xiàng)目文件
cp $PUBLISHED_PATH . -R


#------------------------------- tomcat服務(wù)器解壓war包 ---------------------------------------
#進(jìn)入要發(fā)布版本的文件夾
cd $PUBLISHVERSION_HOME
echo "go to $PUBLISHVERSION_HOME"
#解壓前先刪除舊解壓后的文件
rm -rf $WAR__NAME
echo "rm successfull"
#解壓項(xiàng)目war包
/bin/unzip $WAR__NAME.war -d $WAR__NAME/ &>/dev/null
echo "unzip successfull"

#復(fù)制遠(yuǎn)程服務(wù)器war包最新配置文件到本地服務(wù)器配置文件存放路徑
scp -r $WAR_SERVER_IP:/$PROJECT_CONFIG_FILE/* $PUBLISHVERSION_HOME/$WAR__NAME/WEB-INF/classes

#最后刪除war包酥宴,以便下次更新下載最新war包
rm -rf $WAR__NAME.war
echo "$WAR__NAME.war rm successfull"

--------------------------------------------   說明   ----------------------------------------------------------------------------------
#下面的命令會(huì)將【PROJECT_CONFIG_FILE=/web/appwar/yj/classes】classes目錄給拷貝到本地文件的properties目錄的
#scp -r $WAR_SERVER_IP:/$PROJECT_CONFIG_FILE/ $PUBLISHVERSION_HOME/$WAR__NAME/WEB-INF/classes/properties
#將遠(yuǎn)程【PROJECT_CONFIG_FILE=/web/appwar/yj/classes】classes目錄下的所有文件(不包含classes目錄)拷貝本地properties目錄下
#scp -r $WAR_SERVER_IP:/$PROJECT_CONFIG_FILE/* $PUBLISHVERSION_HOME/$WAR__NAME/WEB-INF/classes/properties
#將遠(yuǎn)程classes目錄下的文件拷貝本地classes目錄下
#scp -r $WAR_SERVER_IP:/$PROJECT_CONFIG_FILE/* $PUBLISHVERSION_HOME/$WAR__NAME/WEB-INF/classes
#或者用scp -r $WAR_SERVER_IP:/$PROJECT_CONFIG_FILE/ $PUBLISHVERSION_HOME/$WAR__NAME/WEB-INF到這里即可,就直接將classes目錄放到WEB-INF下面了
--------------------------------------------    說明   ----------------------------------------------------------------------------------

#------------------------------- tomcat服務(wù)器部署文件 ---------------------------------------
#關(guān)閉tomcat
#/sbin/service tomcat stop
#$TOMCAT_HOME/bin/shutdown.sh
cd $TOMCAT_HOME/bin
#查看進(jìn)程
ps -ef|grep $TOMCAT_HOME|grep -v grep|grep -v kill

#上一個(gè)命令退出后就執(zhí)行kill進(jìn)程號您觉,否則是執(zhí)行下一個(gè)語句說明
#【if [ $? -eq 0 ]:代表上一個(gè)命令執(zhí)行后的退出狀態(tài):0為成功,非0為失敗】
if [ $? -eq 0 ];then
    kill -9 `ps -ef|grep $TOMCAT_HOME|grep -v grep|grep -v kill|awk '{print $2}'`
    sleep 3
    echo "停止tomcat服務(wù)成功"
else
    echo $TOMCAT_HOME ' 該目錄進(jìn)程已KILL或項(xiàng)目未啟動(dòng)'  
fi

#刪除項(xiàng)目文件
rm -rf $PUBLISHED_PATH/*
#刪除臨時(shí)文件拙寡、log日志
rm -rf $TOMCAT_HOME/temp/* 
rm -rf $TOMCAT_HOME/conf/Catalina/*
rm -rf $TOMCAT_HOME/work/*

#拷貝最新版本更新文件到項(xiàng)目發(fā)布路徑下
cp $PUBLISHVERSION_HOME/$WAR__NAME/* $PUBLISHED_PATH/ -R
#復(fù)制配置文件
# cp $PUBLISHVERSION_HOME/classes/* $PUBLISHED_PATH/WEB-INF/classes -R
#啟動(dòng)tomcat,使用service命令時(shí),使用普通用戶需要輸入密碼琳水,所以直接暫不采用service的方式啟動(dòng)和關(guān)閉tomcat
#/sbin/service tomcat start 
$TOMCAT_HOME/bin/startup.sh
#tail -f $TOMCAT_HOME/logs/catalina.$timedate.out




#------------------------------- tnew ---------------------------------------
#!/bin/bash
echo "==================start deploy project========================="
ps -aux | grep /usr/local/tomcat/ | grep -v grep > tomcat_info.txt
sed 's/  / /g' tomcat_info.txt > tomcat_info1.txt
sed 's/  / /g' tomcat_info1.txt > tomcat_info.txt
sed 's/  / /g' tomcat_info.txt > tomcat_info1.txt 
cat tomcat_info1.txt | cut -d' ' -f 2 > tomcat_info.txt

for line in `cat tomcat_info.txt`
do
    kill -9 $line
done

cd /usr/local/tomcat/webapps
rm -rf youxuan_api*
mv /usr/local/jenkinsTempFolder/youxuan_api /usr/local/tomcat/webapps

/etc/init.d/tomcat start
sync
echo 3 > /proc/sys/vm/drop_caches
echo "==================deploy project success========================="

https://blog.51cto.com/meiling/2333265

本地 tomcat部署項(xiàng)目腳本

#/bin/bash
export BUILD_ID=dontkillme
echo "stop  tomcat..."
/usr/local/tomcat/bin/catalina.sh stop

pidlist=`ps -ef | grep tomcat_name | grep -v "grep" | grep -v "tail" |awk '{print $2}' `
kill -9 $pidlist

warDir = /war/projectname
warName = `ls -t $warDir  | head -1`
appDir = "/usr/local/tomcat/webapps"

if rm -rf $appDir/*
then
    mv $warDir/$warName $appDir/ROOT.war && echo "build success!"
    sleep 10s
    echo "start tomcat..."

    /usr/local/tomcat/bin/catalina.sh start
fi
---------
rm -rf /usr/local/tomcat8/webapps/hua.war
\cp -f target/***.war /usr/local/tomcat8/webapps/hua.war

unzip -oqhua.war -d hua

rm -rf /usr/local/tomcat-admin/mywebapps/app/*
\cp -rf  /home/zyy/wars/bulls-admin/target/$adminwar /usr/local/tomcat-admin/mywebapps/app.war
unzip -oq /usr/local/tomcat-admin/mywebapps/app.war -d /usr/local/tomcat-admin/mywebapps/app

----------------------------
#/bin/bash
export BUILD_ID=dontkillme
echo "stop  tomcat..."
/usr/local/tomcat8/bin/catalina.sh stop

pidlist=`ps -ef | grep tomcat8 | grep -v "grep" | grep -v "tail" |awk '{print $2}' `
kill -9 $pidlist

if rm -rf /usr/local/tomcat/webapps/*****.war
then
    \cp -f target/***.war /usr/local/tomcat8/webapps/*****.war && echo "build success!"
    sleep 1s
    echo "start tomcat..."

    /usr/local/tomcat8/bin/catalina.sh start
fi

https://blog.csdn.net/weixin_39483907/article/details/80840948
https://blog.csdn.net/cx118118/article/details/82461966
https://blog.csdn.net/u013887008/article/details/83003665

shell遠(yuǎn)程部署tomcat

#安裝 Publish over SSH插件

1.先在系統(tǒng)設(shè)置里設(shè)置ssh  可以創(chuàng)建一個(gè)用戶肆糕,用用戶和密碼登錄也可以用證書登錄,證書在jenkins服務(wù)器上生成般堆,然后將公鑰發(fā)給應(yīng)用服務(wù)器上,之后在jenkins上配置私鑰后就可以訪問應(yīng)用服務(wù)器了擎宝。

2.設(shè)置send build artifacts over ssh 插件
Source files   target/*.war  or  **/*.war
Remove prefix target     war包前面的目錄
Remote directory    /opt/war/ (遠(yuǎn)程服務(wù)器的臨時(shí)存放路徑,配置好后會(huì)自動(dòng)上傳到這里郁妈,也可以直接放到tomcat目錄下)
Exec command 

export JAVA_HOME=/usr/local/jdk
cd /opt/apache-tomcat-7.0.63/bin/
./deploy.sh

deploy.sh內(nèi)容
#desc:在jenkins構(gòu)建完成后,ROOT.war已經(jīng)是最新的

#重啟tomcat 
bash /opt/apache-tomcat-7.0.63/bin/catalina.sh stop

#確保進(jìn)程正常結(jié)束 
sleep 2 #具體時(shí)間就看你得webapp在調(diào)用shutdown.sh后多久后處于僵死狀態(tài) 
ps -ef | grep ‘tomcat’ | grep -v grep| awk ‘{print $2}’ | xargs kill -9

#刪除webapps下的weixin工程 
rm -rf /opt/apache-tomcat-7.0.63/webapps/ROOT

#備份 
#mv /opt/apache-tomcat-7.0.63/webapps/ROOT.war /opt/apache-tomcat-7.0.63/bak/ROOT.war.date +%Y%m%d%H%M%S.bak

#重啟并打印日志 
nohup bash /opt/apache-tomcat-7.0.63/bin/catalina.sh start & tailf /opt/apache-tomcat-7.0.63/logs/catalina.out


#!/bin/sh
warName=`ls -t /home/wars/  | head -1`x
echo $warName
\mv -f  /home/wars/$warName /usr/local/tomcat8/webapps/xxxx.war
chmod -777 /usr/local/tomcat8/webapps/xxxx.war

特別注意的地方:應(yīng)用服務(wù)器上的tomcat應(yīng)用目錄對上傳war包的用戶要有所有權(quán)绍申,最好是同一用戶噩咪,不然上傳完war包后,因?yàn)闆]有權(quán)限導(dǎo)致解壓不了极阅∥改耄或者也可以修改文件的權(quán)限即可

https://blog.csdn.net/u011277123/article/details/77865741
https://www.cnblogs.com/cheng95/p/6542036.html
https://blog.csdn.net/weixin_39483907/article/details/80840948
http://www.reibang.com/p/b3717d4679b6
https://www.cnblogs.com/YatHo/p/6739814.html
http://www.reibang.com/p/3c6473755773
https://www.cnblogs.com/linjiqin/p/7776691.html
https://blog.csdn.net/tototuzuoquan/article/details/78568655
https://www.cnblogs.com/Dev0ps/p/9045762.html
http://www.mamicode.com/info-detail-1264849.html

tomcat部署到docker

#操作/項(xiàng)目路徑(Dockerfile存放的路勁)
BASE_PATH=/data/paywallet/accounting

#端口(與Dockerfile中的EXPOSE相同)
PORT=8003

#docker 容器中jar目錄(與Dockerfile中的CMD的jar目錄相同)
DOCKER_PATH=/app

#docker 鏡像/容器名字或者jar名字 這里都命名為這個(gè)(建議與Dockerfile中的MAINTAINER相同)
SERVER_NAME=paywallet-accounting
LOG_PATH=/data/canteen/app/logs

#容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')

#鏡像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
DATE=`date +%Y%m%d%H%M`

# 構(gòu)建docker鏡像
function build(){
         if [ -n "$IID" ]; then
                   echo "存在$SERVER_NAME鏡像,IID=$IID"
         else
                   echo "不存在$SERVER_NAME鏡像筋搏,開始構(gòu)建鏡像"
                            cd $BASE_PATH
                   docker build -t $SERVER_NAME .
         fi
}

# 運(yùn)行docker容器
function run(){
         build
         if [ -n "$CID" ]; then
                   echo "存在$SERVER_NAME容器仆百,CID=$CID,重啟docker容器 ..."
                            docker restart $SERVER_NAME
                   echo "$SERVER_NAME容器重啟完成"
         else
                   echo "不存在$SERVER_NAME容器,docker run創(chuàng)建容器..."
                            docker run --name $SERVER_NAME -v $BASE_PATH:$DOCKER_PATH -v $LOG_PATH:/logs  -d -p $PORT:$PORT $SERVER_NAME
                   echo "$SERVER_NAME容器創(chuàng)建完成"
         fi
}
#入口
run


---------



vim docker.sh 
#操作/項(xiàng)目路徑(Dockerfile存放的路勁)
BASE_PATH=/usr/ms_backend
# 源jar路徑  即jenkins構(gòu)建后存放的路徑(

)
SOURCE_PATH=/var/lib/jenkins/workspace
#docker 鏡像/容器名字或者jar名字 這里都命名為這個(gè)
SERVER_NAME=ms_backend
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#鏡像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')

echo "最新構(gòu)建代碼 $SOURCE_PATH/$SERVER_NAME/target/ms_backend.jar 遷移至 $BASE_PATH ...."
#把項(xiàng)目從jenkins構(gòu)建后的目錄移動(dòng)到我們的項(xiàng)目目錄下同時(shí)重命名下
 mv $SOURCE_PATH/$SERVER_NAME/target/ms_backend-0.0.1-SNAPSHOT.jar $BASE_PATH/ms_backend.jar
#修改文件的權(quán)限
 chmod 777 /usr/ms_backend/ms_backend.jar
 echo "遷移完成"


# 構(gòu)建docker鏡像
        if [ -n "$IID" ]; then
                echo "存在$SERVER_NAME鏡像奔脐,IID=$IID"
        else
                echo "不存在$SERVER_NAME鏡像俄周,開始構(gòu)建鏡像"
                        cd $BASE_PATH
                docker build -t $SERVER_NAME .
        fi

# 運(yùn)行docker容器
 docker rm $SERVER_NAME     //刪除原來的容器
# --name docker-test                 容器的名字為docker-test
#   -d                                 容器后臺(tái)運(yùn)行
#   -p 3636:3636                       指定容器映射的端口和主機(jī)對應(yīng)的端口都為3636
#   -v /usr/ms_backend/:/usr/ms_backend/   將主機(jī)的/usr/ms_backend/目錄掛載到容器的/usr/ms_backend/ 目錄中(不可少每次本地更新jar包重啟容器即可,不用重新構(gòu)建鏡像
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8040:8040 $SERVER_NAME
echo "$SERVER_NAME容器創(chuàng)建完成"


----

# Jenkins機(jī)器:編譯完成后髓迎,build生成一個(gè)新版本的鏡像峦朗,push到遠(yuǎn)程docker倉庫
 
# Variables
JENKINS_WAR_HOME='/home/jenkins/.jenkins/workspace/godseyeBranchForNov/godseye-container/target'
DOCKERFILE_HOME='/home/jenkins/docker-file/godseye_war'
HARBOR_IP='172.16.206.32'
REPOSITORIES='godseye_war/godseye'
HARBOR_USER='jkzhao'
HARBOR_USER_PASSWD='Wisedu123'
HARBOR_USER_EMAIL='01115004@wisedu.com'
 
# Copy the newest war to docker-file directory.
\cp -f ${JENKINS_WAR_HOME}/godseye-container-wisedu.war ${DOCKERFILE_HOME}/godseye.war
 
# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} -e ${HARBOR_USER_EMAIL} ${HARBOR_IP} 
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    sudo docker rmi ${IMAGE_ID}
fi
 
# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}/${REPOSITORIES}:${TAG} . &>/dev/null
 
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null



-----


#操作/項(xiàng)目路徑(Dockerfile存放的路勁)
BASE_PATH=/data2/dockerFile
# 源jar路徑
SOURCE_PATH=/app/soft/docker-config/jenkins/workspace/lfeel
#docker 鏡像/容器名字或者jar名字 這里都命名為這個(gè)
SERVER_NAME=lfeel-admin
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#鏡像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
 
DATE=`date +%Y%m%d%H%M`
 
# 最新構(gòu)建代碼 移動(dòng)到項(xiàng)目環(huán)境
function transfer(){
    echo "最新構(gòu)建代碼 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 遷移至 $BASE_PATH/$SERVER_NAME ...."
    cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar $BASE_PATH/$SERVER_NAME
    cp $SOURCE_PATH/$SERVER_NAME/docker/Dockerfile $BASE_PATH/$SERVER_NAME
    echo "遷移完成"
}
 
# 備份
function backup(){
    if [ -f "$BASE_PATH/$SERVER_NAME/$SERVER_NAME.jar" ]; then
    echo "$SERVER_NAME.jar 備份..."
    cp $BASE_PATH/$SERVER_NAME/$SERVER_NAME.jar $BASE_PATH/$SERVER_NAME/backup/$SERVER_NAME-$DATE.jar
    echo "備份 $SERVER_NAME.jar 完成"
else
    echo "$BASE_PATH/$SERVER_NAME/$SERVER_NAME.jar不存在,跳過備份"
    fi
}
 
# 構(gòu)建docker鏡像
function build(){
    if [ -n "$IID" ]; then
    echo "存在$SERVER_NAME鏡像排龄,IID=$IID"
else
    echo "不存在$SERVER_NAME鏡像波势,開始構(gòu)建鏡像"
    cd $BASE_PATH/$SERVER_NAME
    docker build -t $SERVER_NAME .
        fi
}
 
# 運(yùn)行docker容器
function run(){
    backup
    transfer
    build
    if [ -n "$CID" ]; then
    echo "存在$SERVER_NAME容器,CID=$CID,重啟docker容器 ..."
    docker restart $SERVER_NAME
    echo "$SERVER_NAME容器重啟完成"
else
    echo "不存在$SERVER_NAME容器橄维,docker run創(chuàng)建容器..."
    docker run --name $SERVER_NAME -v /data2/upload:/data2/upload -v /data2/logs/lfeel/lfeel-admin:/data2/logs/lfeel/lfeel-admin -d -p 8080:8080 $SERVER_NAME
    echo "$SERVER_NAME容器創(chuàng)建完成"
    fi
}
 
#入口
run

https://blog.csdn.net/w531128724/article/details/90672944
https://www.cnblogs.com/wang-yaz/p/10437377.html
https://www.cnblogs.com/wang-yaz/p/10437377.html
https://www.cnblogs.com/zhaojiankai/p/7828181.html
使用 Jenkins 和 Docker 實(shí)現(xiàn)持續(xù)集成和自動(dòng)化部署
docker安裝與使用
使用Jenkins pipeline流水線構(gòu)建docker鏡像和發(fā)布
https://segmentfault.com/a/1190000007837054

https://blog.csdn.net/jomexiaotao/article/details/83271458

部署vue前端項(xiàng)目

安裝 NodeJS插件

npm install -g cnpm --registry=https://registry.npm.taobao.org # 添加鏡像

https://nodejs.org/en/download/

# 下載源碼包
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz
 tar xvJf  ***.tar.xz -C /usr/local
cd /usr/local
ln -s node-v10.15.3/ nodejs




vi /etc/profile 添加以下內(nèi)容
PATH=$PATH:/usr/local/node-v10.15.3-linux-x64/bin

source /etc/profile
node -v


# Provide Node & npm bin/ folder to PATH
選擇系統(tǒng)工具里設(shè)置的nodejs安裝的配置

# 構(gòu)建 執(zhí)行shell   填寫node shell內(nèi)容
npm install --registry https://registry.npm.taobao.org
cnpm install
npm run build
cd dist
rm -rf ****.tar.gz  #刪除上次打包生成的文件
tar -zcvf ****.tar.gz *  #把生成的項(xiàng)目文件打包方便傳輸?shù)竭h(yuǎn)程服務(wù)器 解壓后也是里面的文件
-- tar zcvf dist.tar.gz dist/  #解壓后會(huì)有dist目錄
cd ../

# 構(gòu)建后操作 send build artifacts over ssh
source files  dist/***.tar.gz
remove prefix  dist
remote directory /vue/packages/
exec commond 如下:
  cp /vue/packages/dist/***.tar.gz  /usr/local/nginx/packages/
  cd /usr/local/nginx/packages/
  tar -zxvf ***.tar.gz
  rm -rf ***.tar.gz
chmod -R 777 /usr/local/nginx/packages/dist

------------
npm install --registry https://registry.npm.taobao.org
npm run dev 
tar zcvf dist.tar.gz dist/ 
rm -rf /usr/local/nginx/html/dist
cp dist.tar.gz /usr/local/nginx/web_flower/
cd /usr/local/nginx/html/
tar -zxvf dist.tar.gz
rm -rf dist.tar.gz
chmod -R 777 /usr/local/nginx/html/dist


----------
npm install --registry https://registry.npm.taobao.org
npm run test
tar zcvf dist.tar.gz dist/ 


pwd
rm -rf /usr/local/nginx/web_flower/dist.tar.gz
cp /home/flower/dist/dist.tar.gz  /usr/local/nginx/html/
cd /usr/local/nginx/html/
tar -zxvf dist.tar.gz
chmod -R 777 /usr/local/nginx/html/dist/

https://blog.csdn.net/jonsonler/article/details/81317352
https://blog.csdn.net/wangzl1163/article/details/83018630
http://www.cnblogs.com/jingrf/p/10382509.html

npm install -g cnpm --registry=https://registry.npm.taobao.org


首先我們安裝webpack-dev-server
在CMD中安裝執(zhí)行npm intall webpack-dev-server -g
在項(xiàng)目目錄執(zhí)行安裝依賴命令: npm install --save-dev webpack-dev-server


npm install webpack -g
npm install webpack --save-dev

https://www.cnblogs.com/yupinghua/p/6308515.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尺铣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子争舞,更是在濱河造成了極大的恐慌凛忿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竞川,死亡現(xiàn)場離奇詭異店溢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)流译,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門逞怨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來者疤,“玉大人福澡,你說我怎么就攤上這事【月恚” “怎么了革砸?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵除秀,是天一觀的道長。 經(jīng)常有香客問我算利,道長册踩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任效拭,我火速辦了婚禮暂吉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缎患。我一直安慰自己慕的,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布挤渔。 她就那樣靜靜地躺著肮街,像睡著了一般。 火紅的嫁衣襯著肌膚如雪判导。 梳的紋絲不亂的頭發(fā)上嫉父,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機(jī)與錄音眼刃,去河邊找鬼绕辖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸟整,可吹牛的內(nèi)容都是我干的引镊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼篮条,長吁一口氣:“原來是場噩夢啊……” “哼弟头!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涉茧,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤赴恨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后伴栓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伦连,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年钳垮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惑淳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饺窿,死狀恐怖歧焦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肚医,我是刑警寧澤绢馍,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布向瓷,位于F島的核電站,受9級特大地震影響舰涌,放射性物質(zhì)發(fā)生泄漏猖任。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一瓷耙、第九天 我趴在偏房一處隱蔽的房頂上張望朱躺。 院中可真熱鬧,春花似錦搁痛、人聲如沸室琢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盈滴。三九已至,卻和暖如春轿钠,著一層夾襖步出監(jiān)牢的瞬間巢钓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工疗垛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留症汹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓贷腕,卻偏偏與公主長得像背镇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子泽裳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361