docker-compose編排nginx+tomcat+fastdfs+mysql
[docker compose 部署nginx-tomcat平臺(tái)}(https://blog.51cto.com/1014810/2114707
)
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在同一臺(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========================="
本地 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
部署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