天天看点

在linux上基于docker实现vue+springboot代码的自动化部署设置ssh秘钥安装node.js定制Dockerfile编写shell脚本

vue+springboot的自动化部署

  • 设置ssh秘钥
  • 安装node.js
  • 定制Dockerfile
  • 编写shell脚本

设置ssh秘钥

我的代码是托管在华为云上的,可以看下官方文档

# 打开Git客户端(Git Bash或Linux的命令行窗口),输入以下命令行:
ssh-keygen -t rsa -C "echo"
#打开Git客户端(Git Bash或linux的命令行窗口),将SSH密钥“~/.ssh/id_rsa.pub”的内容打印出来
cat ~/.ssh/id_rsa.pub
           

复制上述的SSH密钥内容,进入代码托管首页,单击“设置我的SSH密钥”按钮进入SSH密钥管理页面,进行添加

在linux上基于docker实现vue+springboot代码的自动化部署设置ssh秘钥安装node.js定制Dockerfile编写shell脚本

安装node.js

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs

[[email protected] /]# node -v
v10.9.0
[[email protected] /]# npm -v
6.2.0
           

定制Dockerfile

分别创建文件夹dcms8090和dcms8091在对应的目录下面写入下面的代码到Dockerfile文件里面

dcms8090

# Docker image for springboot file run
# VERSION 0.0.1
# Author: echo
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER echo
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD dcms-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
EXPOSE 8090
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=test","-jar","/app.jar"]
           

dcms8091

# Docker image for springboot file run
# VERSION 0.0.1
# Author: echo
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER echo
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD dcms-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
EXPOSE 8090
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"]
           

编写shell脚本

创建dcms.sh文件 vi写入下面代码

cd dcms_code
# 刷新配置文件
source /etc/profile
# 备份原代码
#tar -zcvf dcms.tar ./dcms

# 删除原代码文件夹
rm -rf dcms

# 拉取代码
echo -e "从git华为云拉取后端代码"
git clone [email protected].devcloud.cn-north-4.huaweicloud.com:zgsygsjcxsfgsjngkpt00001/dcms.git
echo -e "从git华为云代码拉取完成"

# 工程打包
cd dcms
rm -rf ./target/dcms-0.0.1-SNAPSHOT.jar

echo -e "\033[32m\n开始打jar包\n\033[0m"
mvn install -Dmaven.test.skip=true
#rm -rf ../../jar/dcms-0.0.1-SNAPSHOT.jar
#cp ./target/dcms-0.0.1-SNAPSHOT.jar ../../jar
rm -rf ../../dcms8090/dcms-0.0.1-SNAPSHOT.jar
cp ./target/dcms-0.0.1-SNAPSHOT.jar ../../dcms8090
rm -rf ../../dcms8091/dcms-0.0.1-SNAPSHOT.jar
cp ./target/dcms-0.0.1-SNAPSHOT.jar ../../dcms8091
echo -e "\033[32m\njar包完成\n\033[0m"

# 删除原镜像
docker rmi dcms8090 &> /dev/null
docker rmi dcms8091 &> /dev/null
echo -e "\033[32m\n删除原镜像\n\033[0m"
echo -e "\033[32m\n构建新镜像\n\033[0m"

cd ../../
docker build -t dcms8090 ./dcms8090
docker build -t dcms8091 ./dcms8091
echo -e "\033[32m\n新镜像构建成功\n\033[0m"

# 删除原容器
docker rm -f dcms8090
docker rm -f dcms8091

# 启动容器
echo -e "启动容器8090和8091"
docker run -d -p 8090:8090 --name dcms8090 dcms8090
docker run -d -p 8091:8091 --name dcms8091 dcms8091
echo -e "容器启动成功"
echo  -e "\033[32m\n后端工程部署完成\n\033[0m"

# 清除docker容器日志
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
    do
        echo "clean logs : $log"
        echo "" > $log
    done

# 部署前端VUE项目
echo -e "从git华为云拉取前端代码"
cd /usr/local/echo/dcms_code/DCMSV
# 第一次的时候clone代码 后面可以pull
git pull [email protected].devcloud.cn-north-4.huaweicloud.com:zgsygsjcxsfgsjngkpt_hw1433202200001/DCMSV.git
echo -e "从git华为云拉取前端代码完成"
npm run build 
mv dist /var/www #将把包好的dist文件放到nginx配置的目录下面

# 重启nginx
docker restart 1c284f95734a
           

./dcms.sh启动

继续阅读