#!/bin/sh
echo "更新服务开始。。。。"
###jenkins 从 gitlab 上拉取的项目所在路径
home="/Users/Function/.jenkins/workspace/spring-cloud"
### 自定义的docker-compose.yml 文件所在路径
docker_home="/Users/Function/Documents/workspace/docker-workspace/spring-cloud"
### admin服务文件夹名
admin_home="/admin-service"
### eureka服务文件夹名
eureka_home="/eureka-service"
### business服务文件夹名
business_home="/business-service/business-service-impl"
### 判断admin服务路径是否存在
if [ ! -e ${home}${admin_home} ];then
echo "${admin_home} 不存在"
exit 1;
fi
### 判断eureka服务路径是否存在
if [ ! -e "${home}${eureka_home}" ];then
echo "${eureka_home} 不存在"
exit 1;
fi
### 判断bussines_home服务路径是否存在
if [ ! -e "${home}${business_home}" ];then
echo "${business_home} 不存在"
exit 1;
fi
### 执行项目根目录下gradlew文件
echo "清除上次构建文件......"
cd ${home}
sh ${home}/gradlew clean
sleep 3
echo "开始构建Admin服务...."
cd ${home}${admin_home}
sh ${home}/gradlew bootJar -x test
echo "Admin服务构建完成...."
sleep 3
echo "开始构建eureka服务...."
cd ${home}${eureka_home}
sh ${home}/gradlew bootJar -x test
echo "开始构建eureka服务构建完成...."
sleep 3
echo "开始构建business服务...."
cd ${home}${business_home}
sh ${home}/gradlew bootJar -x test
echo "Service服务构建完成...."
if [ ! $? -eq 0 ];then
echo "gradle 执行失败: $?"
exit 1;
fi
echo "将最新jar包移动到DOCKER目录. ${docker_home}"
if [ ! -e "${docker_home}" ]; then
echo "${docker_home} 不存在"
exit 1;
fi
echo "删除旧的jar..."
rm -rf ${docker_home}/*.jar
echo "开始移动Eurake.."
mv ${home}${eureka_home}/build/libs/eureka-service.jar ${docker_home}
echo "开始移动Admin.."
mv ${home}${admin_home}/build/libs/admin-service.jar ${docker_home}
echo "开始移动Business.."
mv ${home}${business_home}/build/libs/business-service-impl.jar ${docker_home}
### 进入 docker-compose 文件所在目录
cd ${docker_home}
echo "停止并删除启动的容器....."
### 先停止并删除 上一次根据docker-compose启动的容器 注:echo 中输入的是你本机电脑密码,用 shell 执行 docker 命令时需要sudo 权限
echo "ccz123456..." | sudo -S docker-compose down
sleep 1
echo "删除spring-cloud 服务镜像....."
### 删除上一次构建的spring-cloud项目镜像 其中 grep service 中的service 是镜像名中包含的字段,是生成镜像时可以指定,如镜像名为: sc-service ,编写docker-compose时会说明
echo "ccz123456..." | sudo -S docker rmi --force `docker images | grep service | awk '{print $3}'`
sleep 1
echo "构建spring-cloud新的服务镜像....."
### 构建镜像镜像
echo "ccz123456..." | sudo -S docker-compose build
sleep 1
echo "启动服务容器....."
### 构建镜像并启动容器
echo "ccz123456..." | sudo -S docker-compose up -d
# 依赖的java版本
FROM java:8
# 在容器中创建工作目录
RUN mkdir /app
# 指定工作目录
WORKDIR /app
#将你本机docker-home 目录下的 admin-service.jar ADD 到 容器 工作目录下并命名为 app.jar (不重命名也行)
ADD admin-service.jar /app/app.jar
# 执行环境 其中-Djava.security.egd=file:/dev/./urandom 是JVM 熵池 参数,想了解的可百度
# --spring.profiles.active=docker 是springcloud 配置文件 application.yml文件配置项,当有多个application.yml时用来指定加载哪个配置文件
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar","--spring.profiles.active=docker"]
# 开放8080端口
EXPOSE 8080
version: "3" # docker-compose 版本
services: # 服务
eureka-service: # 定义eureka-service 名字随意
container_name: eureka-container # 指定容器名 随意
build:
context: . # dockerfile 文件所在路径 点 指的是 dockerfile 文件在当前docker-compose.yml所在目录下
dockerfile: dockerfile-eureka # dockerfile 文件名
image: eureka-service:v1 # 指定生成的镜像名 并打上tag 标签 v1
hostname: eurekaservice # 容器hostname
ports:
- "8761:8761" # 暴露容器端口到主机
business-service:
container_name: business-container
build:
context: .
dockerfile: dockerfile-business
image: business-service:v1
ports:
- "8020:8020"
depends_on: # 当前容器依赖于eureka 容器 ,当前容器会在 eureka-service 容器启动后执行
- eureka-service
links: # 链接 注册到eureka eurekaservice 我会在下面说明
- "eureka-service:eurekaservice"
admin-service:
container_name: admin-container
build:
context: .
dockerfile: dockerfile-admin
image: admin-service:v1
ports:
- "8080:8080"
depends_on: # 当前容器依赖于以上两个容器
- eureka-service
- business-service
links:
- "eureka-service:eurekaservice"
- "business-service"
由用户 蔡茶茶 启动
启动构建中 在工作空间 /Users/Function/.jenkins/workspace/spring-cloud 中
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url [http://git.xxxx.com/spring-cloud.git](http://git.xxxx.com/spring-cloud.git) # timeout=10
Fetching upstream changes from [http://git.xxxx.com/spring-cloud.git](http://git.xxxx.com/spring-cloud.git)
> git --version # timeout=10
using GIT_SSH to set credentials
> git fetch --tags --progress [http://git.xxxx.com/spring-cloud.git](http://git.xxxx.com/spring-cloud.git) +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision c85486e6447c023c0e70f98885760761aaaa928e (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f c85486e6447c023c0e70f98885760761aaaa928e
Commit message: "修改shell了嘞嘞"
> git rev-list --no-walk c85486e6447c023c0e70f98885760761aaaa928e # timeout=10
[spring-cloud] $ /bin/sh -xe /var/folders/26/b1nkkk7j22v7dx9mvdty84vr0000gn/T/jenkins3559310015219383127.sh
+ cd /Users/Function/.jenkins/workspace/spring-cloud/
+ chmod u+x build.sh
+ ./build.sh
更新服务开始。。。。
清除上次构建文件......
:admin-service:clean
:business-service:clean UP-TO-DATE
:eureka-service:clean
:business-service:business-service-api:clean
:business-service:business-service-impl:clean
BUILD SUCCESSFUL in 0s
5 actionable tasks: 4 executed, 1 up-to-date
开始构建Admin服务....
:business-service:business-service-api:compileJava
:business-service:business-service-api:processResources NO-SOURCE
:business-service:business-service-api:classes
:business-service:business-service-api:jar
:admin-service:compileJava
:admin-service:processResources
:admin-service:classes
:admin-service:bootJar
BUILD SUCCESSFUL in 4s
5 actionable tasks: 5 executed
Admin服务构建完成....
开始构建eureka服务....
:eureka-service:compileJava
:eureka-service:processResources
:eureka-service:classes
:eureka-service:bootJar
BUILD SUCCESSFUL in 2s
3 actionable tasks: 3 executed
开始构建eureka服务构建完成....
开始构建business服务....
:business-service:business-service-api:compileJava UP-TO-DATE
:business-service:business-service-api:processResources NO-SOURCE
:business-service:business-service-api:classes UP-TO-DATE
:business-service:business-service-api:jar UP-TO-DATE
:business-service:business-service-impl:compileJava
:business-service:business-service-impl:processResources
:business-service:business-service-impl:classes
:business-service:business-service-impl:bootJar
BUILD SUCCESSFUL in 2s
5 actionable tasks: 3 executed, 2 up-to-date
Service服务构建完成....
将最新jar包移动到DOCKER目录. /Users/Function/Documents/workspace/docker-workspace/spring-cloud
删除旧的jar...
开始移动Eurake..
开始移动Admin..
开始移动Business..
停止并删除启动的容器.....
Password:Removing admin-container ...
Removing busines-container ...
Removing eureka-container ...
[3A[2K
Removing admin-container ... [32mdone[0m
[3B[2A[2K
Removing busines-container ... [32mdone[0m
[2B[1A[2K
Removing eureka-container ... [32mdone[0m
[1BRemoving network spring-cloud_default
删除spring-cloud 服务镜像.....
Untagged: admin-service:v1
Deleted: sha256:8bb51f82162535270d6bc7274ea8cac1e0a98ca103facf6548056ca3a1bcb484
Deleted: sha256:60257e125ebc783f930f79f16516091204e99a4a9d0390dcefa63703cb8c598c
Deleted: sha256:0e7e5c3a29df6fb7142fa37da4fc00526341f5b966099e6125f728efd2c52a6e
Deleted: sha256:169fc43041641f26b1046cd843d1e347bfd557625b4b39e798b621042721437c
Untagged: busines-service:v1
Deleted: sha256:d8cd89f0b7eba9a0b31eda5ec36b83bb1da4ebabfc549a915af36a62a4173b32
Deleted: sha256:03fc157106a95d58a0233655e55c616a68ca76d1d72fbf58705072e6729a4caf
Deleted: sha256:67e010d66dbf3e30adbd94f5eb33ad893ce7bba97f0cccec676d5f0834c7f44f
Deleted: sha256:2e2005d82ca03e80ed71f3b5c3c9087d720d6e727e2286f01967ec6fb0318023
Untagged: eureka-service:v1
Deleted: sha256:bf7b59c1673b09613df678a0cfe0156e645dad6aa9230a0fe90af2fd89163acc
Deleted: sha256:df664e41f222cb957a484110824f4bb977011698247e13b1413ca4097d17f003
Deleted: sha256:93cb206e2f8772c8b7d1f84a7a46d67393cdd0d8c7e61d28461087c82c0fdeec
Deleted: sha256:60863060e250a714a33dea8bef0393a8ea5a4f75fa96c28cef084392059e1128
构建spring-cloud新的服务镜像.....
Building eureka-service
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : RUN mkdir /app
---> Using cache
---> 27c94e92d2a7
Step 3/6 : WORKDIR /app
---> Using cache
---> 49efed4c9ca0
Step 4/6 : ADD eureka-service.jar /app/app.jar
---> 56270e100c2a
Step 5/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar","--spring.profiles.active=default"]
---> Running in 8a997301d5b3
Removing intermediate container 8a997301d5b3
---> 2134b5a800a4
Step 6/6 : EXPOSE 8761
---> Running in 26c507af1c50
Removing intermediate container 26c507af1c50
---> 593b51aa6fa4
Successfully built 593b51aa6fa4
Successfully tagged eureka-service:v1
Building busines-service
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : RUN mkdir /app
---> Using cache
---> 27c94e92d2a7
Step 3/6 : WORKDIR /app
---> Using cache
---> 49efed4c9ca0
Step 4/6 : ADD business-service-impl.jar /app/app.jar
---> 638b8674ee26
Step 5/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar","--spring.profiles.active=docker"]
---> Running in 5774538bd4d9
Removing intermediate container 5774538bd4d9
---> 0505d456c863
Step 6/6 : EXPOSE 8020
---> Running in f9714296fe56
Removing intermediate container f9714296fe56
---> 8d2ab6dd3c19
Successfully built 8d2ab6dd3c19
Successfully tagged busines-service:v1
Building admin-service
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : RUN mkdir /app
---> Using cache
---> 27c94e92d2a7
Step 3/6 : WORKDIR /app
---> Using cache
---> 49efed4c9ca0
Step 4/6 : ADD admin-service.jar /app/app.jar
---> 8eb5a94001ff
Step 5/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar","--spring.profiles.active=default"]
---> Running in f7e7ce480b15
Removing intermediate container f7e7ce480b15
---> cd478f10383b
Step 6/6 : EXPOSE 8080
---> Running in 8509924c9984
Removing intermediate container 8509924c9984
---> d31a4a4c3358
Successfully built d31a4a4c3358
Successfully tagged admin-service:v1
启动服务容器.....
Creating network "spring-cloud_default" with the default driver
Creating eureka-container ...
[1A[2K
Creating eureka-container ... [32mdone[0m
[1BCreating busines-container ...
[1A[2K
Creating busines-container ... [32mdone[0m
[1BCreating admin-container ...
[1A[2K
Creating admin-container ... [32mdone[0m
[1BFinished: SUCCESS</pre>
手机扫一扫
移动阅读更方便
你可能感兴趣的文章