解决:如何让一个镜像变得更小; 多阶段构建的典型示例
https://docs.docker.com/develop/develop-images/multistage-build/
生产示例
FROM maven AS builder#设置当前目录为默认目录WORKDIR /appRUN pwd#从目录中辅助src文件到容器的目录中 . 代表当前容器默认目录COPY src ./src#从目录中辅助pom.xml文件到容器的目录中 . 代表当前容器默认目录COPY pom.xml .#开始编译java项目RUN pwd && ls -LRUN mvn clean package -Dmaven.test.skip=trueRUN pwd && ls -L###把编译好的jar包复制到默认目录并改名app.jarRUN cp /app/target/*.jar app.jar#####################以上是第一阶段###################### 第二阶段,最小运行时环境,只需要jreFROM openjdk:8-jre-alpine# 修改时区RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone# 从上一个阶段复制内容COPY --from=builder /app/target/*.jar /app.jar#限制内存什么的ENV JAVA_OPTS=""#运行相关参数改端口这些ENV PARAMS=""# 运行jar包ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS-jar /app.jar $PARAMS" ]#####################以上是第二阶段######################缺少从git拉取代码
POM从阿里云上获取maven仓库数据
<!--为了加速下载需要在pom文件中复制如下 --><repositories><repository><id>aliyun</id><name>Nexus Snapshot Repository</name><url>https://maven.aliyun.com/repository/public</url><layout>default</layout><releases><enabled>true</enabled></releases> <!--snapshots默认是关闭的,需要开启 --><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>aliyun</id><name>Nexus Snapshot Repository</name><url>https://maven.aliyun.com/repository/public</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>
