2.docker镜像制作及部署工作任务(吴灵辉,赵露露,张旭协助)
工作目标:开发源环境脚本自动生成镜像文件(加版本号 x.x.x),提交至镜像库,在另外环境从镜像库自动部署启动,
总流程:sousa项目docket自动制作dockfile->进入仓库->部署.3环境
1)项目svn://39.104.16.40:3510/manufacture/codeSource/trunk/sousa
2)环境 39.104.16.40 /home/cmes/workspace/sousa/sousa,从这里制作dockfile,能够通过shell脚本自动生成sousa镜像,
3)镜像仓库:一会儿提供
4)部署环境:39.105.142.3,从镜像库拉取镜像,并能启动运行@小太阳 955 @啦啦啦拉拉啦啦啦
不要弄错了 sousa那个项目下
这次制作做的镜像放到sousa那里
先学会弄镜像,脚本自动生成镜像然后在学提交镜像库
root rootroot12345
#! /bin/sh
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162/
export PATH=$PATH:$JAVA_HOME/bin/
export CLASSPATH=.
# 获得mvn版本号。
VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)
# 截取一下.
VERSION=`echo ${VERSION%.*}`
# 获得mvnartifactId 镜像名字。 这里的war设置了名称。打包后
# ARTIFACT_ID=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.artifactId -q -DforceStdout)
# docker hub url
URL=ip:50002
# 检出
# svn checkout svn://39.104.16.40:3510/manufacture/codeSource/trunk/sousa
# 更新源代码。
svn update --username wulinghui --password wulinghui@123
# mvn打包。 建议:如果要跳过测试,在pom.xml里面添加吧。
# mvn install -Dmaven.test.skip=true
mvn clean package
WAR_NAME=`ls target | grep .war`
# 由pom文件决定.
#TAG_URL=$URL/$ARTIFACT_ID:$VERSION
# 由用户输入
TAG_URL=$URL/$1:$VERSION
# docker
# 备份一下。
rm -rf docker.bak
mv -f docker docker.bak
# 新建
mkdir docker
# 复制到docker文件中,注意这里的war应该可以直接部署的,不会出现war依赖问题。这个在pom.xml里面配置就行了。
cp target/$WAR_NAME docker/
# 重命名
# mv docker/$ARTIFACT_ID-$VERSION.war docker/$ARTIFACT_ID.war
# 编写dockerFile文件
cat > docker/Dockerfile <
龙哥,做完了。
用户使用如下:
cd /home/cmes/workspace/sousa/sousa
sh -x run-boot.sh sousa/sousa
生成的docker-tag: pom-version对应的是pom.xml的version
ip:50002/sprism-service/sousa:pom-version
war
src/main/java
org.apache.maven.plugins
maven-compiler-plugin
3.2
1.8
default-compile
compile
compile
maven-war-plugin
3.0.0
sousa
WEB-INF/lib/${project.artifactId}*.jar
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
true
org.springframework.boot
spring-boot-maven-plugin
ys.manufacture.sousa.SousaStartup
repackage
lib
BOOT-INF/lib/
**/*.jar
src/main/resources
BOOT-INF/classes
src/main/webapp
BOOT-INF/classes/resources
本来到这里就可以了,但是自己底层jar解析配置文件只支持在文件里,不支持在jar里面,所以需要把配置文件输出到指定目录。
第2版,
war
src/main/java
org.apache.maven.plugins
maven-compiler-plugin
3.2
1.8
default-compile
compile
compile
maven-war-plugin
3.0.0
sousa
WEB-INF/lib/${project.artifactId}*.jar
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
true
org.springframework.boot
spring-boot-maven-plugin
ys.manufacture.sousa.SousaStartup
repackage
org.apache.maven.plugins
maven-resources-plugin
copy-resources
package
copy-resources
UTF-8
${project.build.directory}/
src/main/resources/
lib
BOOT-INF/lib/
**/*.jar
src/main/webapp
BOOT-INF/classes/resources
第3版。
这个运行需要指定classpath:
java -Xbootclasspath/a:./ -noverify -jar sousa-app-1.0.0.jar
这里有个dockefile的坑:
from openjdk:8-jdk-alpine
MAINTAINER ys
COPY target /home/sousa/sousa
WORKDIR /home/sousa/sousa
# 以这种形式写的话,有空格就得""包起来。
# ENTRYPOINT ["java","-Xbootclasspath/a:./ -noverify","-jar","$WAR_NAME"] 报错。
ENTRYPOINT ["java","-Xbootclasspath/a:./","-noverify","-jar","$WAR_NAME"]
第4版。就单独的一个可执行文件,不好管理。Spring Boot 打包,分离依赖jar,配置文件。
看pom4.xml
https://www.jianshu.com/p/dbdece9062b3
java -Xbootclasspath/a:./resources -noverify -jar sousa-app-1.0.0.jar
第5版。就单独的一个可执行文件,不好管理。Spring Boot 打包,分离依赖jar-打成zip包,配置文件。
spring-boot-maven-plugin的repackage是在打包之后在进行一次重新打包。
看了第4版和这个maven打可运行jar,包含依赖jar,且打成zip包
https://blog.csdn.net/luo_zehua/article/details/52484680
这总好像不行,.zip的方式只是方便部署。
参考:https://wely.iteye.com/blog/2304825 assembly插件的解析。
java -noverify -jar sousa-app-1.0.0.jar
java -Xbootclasspath/a:./lib -noverify -jar sousa-app-1.0.0.jar
第6版,这样打包的确可以跑起来公共ui的内容。但是无法加载自己框架的view。
主要原因: 他把项目放到boot-inf/classes/下了。我们框架只加载根路径。
解决办法:
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
classpath:/static/,classpath:/public/,file:./webapp
src/main/webapp
${project.build.directory}/webapp
src/main/java
org.apache.maven.plugins
maven-compiler-plugin
3.2
1.8
default-compile
compile
compile
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
true
org.apache.maven.plugins
maven-jar-plugin
*.**
*/*.xml
true
lib/
false
${start-class}
./resources/
${project.build.directory}
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
package
copy-dependencies
${project.build.directory}/lib/
maven-resources-plugin
copy-resources
package
copy-resources
src/main/resources
${project.build.directory}/resources
src/main/webapp
${project.build.directory}/webapp
src/main/resources
${project.build.directory}/classes