docker部署-springboot项目脚本

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

  1. 第1版,打war
 
        war
        src/main/java

        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.2
                
                    1.8
                    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
                    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/下了。我们框架只加载根路径。
解决办法:

  1. 自己重写boot插件(难度高,CTO也不会同意)
  2. 先把jar解压后再操作BOOT-INF/class/ys -> /ys下面 , 再打包。 (没有试,估计有问题)
  3. 把原始jar,交给Boot再加载一次(Boot加载机制和Tomcat机制一样,先就加载了BOOT-INF的内容,原始jar没有生效)
  4. 采用原始jar,直接run main。
    这里会出现一个问题,页面找不到的问题。我们采用虚拟路径配置
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
                    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
            
        
    

你可能感兴趣的:(#,远舢智能,#,docker,Ĵava)