这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
# Docker image for multi stage build
# VERSION 0.0.1
# Author: bolingcavalry
### 第一阶段,用maven镜像进行编译
FROM maven:3.6.1 AS compile_stage
####################定义环境变量 start####################
#定义工程名称,也是源文件的文件夹名称
ENV PROJECT_NAME eureka-server
#定义工作目录
ENV WORK_PATH /usr/src/$PROJECT_NAME
####################定义环境变量 start####################
#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>
#将源码复制到当前目录
COPY ./$PROJECT_NAME $WORK_PATH
#如果前面您已经准备好了repository目录,就可以用来替换镜像中的repository目录了,先删除镜像中已有的repository
RUN rm -rf /root/.m2/repository
#将准备好的repository文件夹复制进来,这样相当于镜像环境中已经有了java工程所需的jar,可以避免去maven中央仓库下载
COPY ./repository /root/.m2/repository
#编译构建
RUN cd $WORK_PATH && mvn clean package -U -DskipTests
### 第二阶段,用第一阶段的jar和jre镜像合成一个小体积的镜像
FROM java:8-jre-alpine
####################定义环境变量 start####################
#定义工程名称,也是源文件的文件夹名称
ENV PROJECT_NAME eureka-server
#定义工程版本
ENV PROJECT_VERSION 0.0.1-SNAPSHOT
#定义工作目录
ENV WORK_PATH /usr/src/$PROJECT_NAME
####################定义环境变量 start####################
#安全起见不用root账号,新建用户admin
RUN adduser -Dh /home/admin admin
#工作目录是/app
WORKDIR /app
#从名为compile_stage的stage复制构建结果到工作目录
COPY --from=compile_stage $WORK_PATH/target/${PROJECT_NAME}-${PROJECT_VERSION}.jar .
#启动应用
CMD ["sh", "-c", "java -jar /app/${PROJECT_NAME}-${PROJECT_VERSION}.jar --spring.profiles.active=dev"]
docker build -t bolingcavalry/multi-stage-build:0.0.1-SNAPSHOT .
...
Step 13/16 : RUN adduser -Dh /home/admin admin
---> Running in 20421e52c3e6
Removing intermediate container 20421e52c3e6
---> dfb33f654436
Step 14/16 : WORKDIR /app
---> Running in d17f74e9c119
Removing intermediate container d17f74e9c119
---> bbd17f2d0777
Step 15/16 : COPY --from=compile_stage $WORK_PATH/target/${PROJECT_NAME}-${PROJECT_VERSION}.jar .
---> 5d194c2a6b17
Step 16/16 : CMD ["sh", "-c", "java -jar /app/${PROJECT_NAME}-${PROJECT_VERSION}.jar --spring.profiles.active=dev"]
---> Running in 2cb771e5af44
Removing intermediate container 2cb771e5af44
---> b05fc74903ed
Successfully built b05fc74903ed
Successfully tagged bolingcavalry/multi-stage-build:0.0.1-SNAPSHOT
REPOSITORY TAG IMAGE ID CREATED SIZE
bolingcavalry/multi-stage-build 0.0.1-SNAPSHOT b05fc74903ed 2 minutes ago 148MB
maven 3.6.1 740262c47f21 3 days ago 614MB
java 8-jre-alpine fdc893b19a14 2 years ago 108MB
docker run -p 8080:8082 bolingcavalry/multi-stage-build:0.0.1-SNAPSHOT
领取专属 10元无门槛券
私享最新 技术干货