一、部署前端Vue项目
第一步、编写构建脚本xxx-build.sh
port=xxx
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
#进入工作目录,重启baye-ui
if [ $? -eq 0 ]; then
echo "关闭baye-ui成功"
#让项目在后台运行
nohup npm run test >/dev/null 2>&1 &
echo "重启成功"
else
echo "无法终止baye-ui"
fi
第二步、在jenkins中创建构建项目
第三步、配置项目
(1)工作空间
(2)源码仓库
(3)构建触发事件
主要讲述push事件
A:配置jenkins
B:配置gitlab
进入gitlab-->进入项目-->打开左侧setting-->选择Integrations-->添加jenkins中获取的URL和token
(4)配置构建shell命令
#禁止构建后中止衍生进程
BUILD_ID=DONTKILLME
cd /workspace/baye-ui
sh ./baye-ui-run.sh
第四步、立即构建,测试配置
二、部署后端Cloud项目
2.1 服务中编写Dockerfile文件
#基本形式如下
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER [email protected]
#创建服务工作目录
RUN mkdir -p /xxx-/bin/xxx/xxx-config
#指定工作目录
WORKDIR /xxx-/bin/xxx/xxx-config
#与端口对应
EXPOSE 11001
#添加jar包到工作目录
ADD ./xxx-config/target/xxx-config.jar ./
#运行服务
CMD java -Djava.security.egd=file:/dev/./urandom -Xms50m -Xmx300m -jar xxx-config.jar
2.2 项目中编写docker-compose.yml
version: '2'
#定义服务
services:
xxx-zookeeper:
image: zookeeper:3.4.13
ports:
- 2181:2181
restart: always
container_name: xxx-zookeeper
xxx-redis:
image: redis:4.0.10
ports:
- 6379:6379
restart: always
container_name: xxx-redis
xxx-eureka:
build:
context: ./
dockerfile: ./xxx-eureka/Dockerfile
restart: always
ports:
- 11002:11002
container_name: xxx-eureka
xxx-config:
links:
- xxx-eureka
build:
context: ./
dockerfile: ./xxx-config/Dockerfile
restart: always
ports:
- 11001:11001
container_name: xxx-config
xxx-gateway:
links:
- xxx-eureka
- xxx-redis
- xxx-config
build:
context: ./
dockerfile: ./xxx-gateway/Dockerfile
restart: always
ports:
- 11003:11003
container_name: xxx-gateway
xxx-auth:
links:
- xxx-eureka
- xxx-redis
- xxx-config
build:
context: ./
dockerfile: ./xxx-auth/Dockerfile
restart: always
ports:
- 11004:11004
container_name: xxx-auth
xxx-upms:
links:
- xxx-eureka
- xxx-redis
- xxx-gateway
- xxx-config
build:
context: ./
dockerfile: ./xxx-provider/xxx-upms-biz/Dockerfile
restart: always
ports:
- 10003:10003
container_name: xxx-upms
xxx-monitor:
links:
- xxx-eureka
- xxx-redis
- xxx-config
build:
context: ./
dockerfile: ./xxx-visual/xxx-monitor/Dockerfile
restart: always
ports:
- 11005:11005
container_name: xxx-monitor
xxx-daemon:
links:
- xxx-eureka
- xxx-redis
- xxx-config
build:
context: ./
dockerfile: ./xxx-visual/xxx-daemon/Dockerfile
restart: always
ports:
- 5002:5002
container_name: xxx-daemon
xxx-codegen:
links:
- xxx-eureka
- xxx-redis
- xxx-gateway
- xxx-config
build:
context: ./
dockerfile: ./xxx-visual/xxx-codegen/Dockerfile
restart: always
ports:
- 11007:11007
container_name: xxx-codegen
xxx-tx-manager:
links:
- xxx-eureka
- xxx-redis
- xxx-config
build:
context: ./
dockerfile: ./xxx-visual/xxx-tx-manager/Dockerfile
restart: always
ports:
- 11008:11008
- 9998:9998
container_name: xxx-tx-manager
xxx-base:
links:
- xxx-eureka
- xxx-redis
- xxx-gateway
- xxx-config
build:
context: ./
dockerfile: ./xxx-provider/xxx-base-biz/Dockerfile
restart: always
ports:
- 10001:10001
- 9998:9998
container_name: xxx-base
xxx-vas:
links:
- xxx-eureka
- xxx-redis
- xxx-gateway
- xxx-config
build:
context: ./
dockerfile: ./xxx-provider/xxx-vas-biz/Dockerfile
restart: always
ports:
- 10005:10005
container_name: xxx-vas
注意:
links:实现容器间相互通信(最好更改hosts文件,做端口和域名映射)
build:指定Dockerfile文件所在
ports:宿主机与容器端口映射
container_name:容器名
2.3 编写构建脚本
#进入工作目录
cd /workspace/xxx
#安装xxx至本地maven仓库
mvn clean install -Dmaven.test.skip=true -P test
#停止容器
if [ $? -eq 0 ]; then
echo "编译成功,开始停止容器"
docker-compose stop
else
echo "无法完成编译"
exit
fi
#删除容器
if [ $? -eq 0 ]; then
echo "开始删除容器"
docker-compose rm -f
else
echo "无法停止容器"
exit
fi
#重新创建服务
if [ $? -eq 0 ]; then
echo "编译成功,开始重新创建服务"
docker-compose build
else
echo "无法删除容器"
exit
fi
#启动eureka
if [ $? -eq 0 ]; then
docker-compose up -d xxx-eureka
else
echo "无法创建服务"
exit
fi
#启动config
if [ $? -eq 0 ]; then
docker-compose up -d xxx-config
else
echo "无法启动eureka"
exit
fi
#启动auth
if [ $? -eq 0 ]; then
docker-compose up -d xxx-auth
else
echo "无法启动config"
exit
fi
#启动gateway
if [ $? -eq 0 ]; then
docker-compose up -d xxx-gateway
else
echo "无法启动auth"
exit
fi
#启动upms
if [ $? -eq 0 ]; then
docker-compose up -d xxx-upms
else
echo "无法启动gateway"
exit
fi
#启动codegen
if [ $? -eq 0 ]; then
docker-compose up -d xxx-codegen
else
echo "无法启动upms"
exit
fi
#删除无用镜像
if [ $? -eq 0 ]; then
docker rmi `docker images | grep "<none>" | awk '{print $3}'`
fi
2.4 配置jenkins
与一种配置方式基本一致
2.5 立即构建,测试并追踪构建信息
(1)拉取源码,并执行install成功
(2)重新构建项目成功
(3)删除过时无用的镜像成功