springboot2.3.0layer分层构建docker

1、首先,插件需要2.3.0及以上


                org.springframework.boot
                spring-boot-maven-plugin
                2.3.0.RELEASE
                
                    
                        true
                    
                
            

2.构建脚本

appname=cqliving-boot-yswlg-cms
jarname=mets-admin-1.0.0-SNAPSHOT.jar
appPath=/var/www/fx/$appname
env=test 
imgName=[镜像仓库地址]/$env/act/$appname:latest
cd $appPath;
\cp /var/www/fx/Dockerfile Dockerfile
docker build \
--build-arg appname=$appname \
--build-arg jarname=$jarname \
--build-arg env=$env \
--build-arg port=9001 \
-t $imgName .
docker images|grep none|awk '{print $3}'|xargs docker rmi
docker push $imgName

3.Dockerfile

FROM [镜像仓库地址]/prod/common/jre8-alpine:latest as builder
WORKDIR application
ARG jarname
ADD $jarname application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM [镜像仓库地址]/prod/common/jre8-alpine:latest
WORKDIR application
ARG appname
ARG env
ARG port
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
EXPOSE $port
ENV JAVA_OPTS="\
-server \
-XX:MetaspaceSize=512m \
-XX:MaxMetaspaceSize=1024m \
-Xms1024m \
-Xmx2048m \
-Xmn256m \
-Xss256k \
-XX:SurvivorRatio=8 \
-XX:+UseConcMarkSweepGC \
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-verbose:gc \
-Xloggc:/var/www/logs/$appname/gc.log \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/www/logs/$appname/oom.hprof \
-Dserver.port=$port \
-Dspring.profiles.active=$env"
ENTRYPOINT java ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher

 

你可能感兴趣的:(springboot,maven,docker)