解决:如何让一个镜像变得更小; 多阶段构建的典型示例

    https://docs.docker.com/develop/develop-images/multistage-build/

    生产示例

    1. FROM maven AS builder
    2. #设置当前目录为默认目录
    3. WORKDIR /app
    4. RUN pwd
    5. #从目录中辅助src文件到容器的目录中 . 代表当前容器默认目录
    6. COPY src ./src
    7. #从目录中辅助pom.xml文件到容器的目录中 . 代表当前容器默认目录
    8. COPY pom.xml .
    9. #开始编译java项目
    10. RUN pwd && ls -L
    11. RUN mvn clean package -Dmaven.test.skip=true
    12. RUN pwd && ls -L
    13. #
    14. ##把编译好的jar包复制到默认目录并改名app.jar
    15. RUN cp /app/target/*.jar app.jar
    16. #####################以上是第一阶段#####################
    17. # 第二阶段,最小运行时环境,只需要jre
    18. FROM openjdk:8-jre-alpine
    19. # 修改时区
    20. RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    21. # 从上一个阶段复制内容
    22. COPY --from=builder /app/target/*.jar /app.jar
    23. #限制内存什么的
    24. ENV JAVA_OPTS=""
    25. #运行相关参数改端口这些
    26. ENV PARAMS=""
    27. # 运行jar包
    28. ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS-jar /app.jar $PARAMS" ]
    29. #####################以上是第二阶段#####################
    30. #缺少从git拉取代码

    POM从阿里云上获取maven仓库数据

    1. <!--为了加速下载需要在pom文件中复制如下 -->
    2. <repositories>
    3. <repository>
    4. <id>aliyun</id>
    5. <name>Nexus Snapshot Repository</name>
    6. <url>https://maven.aliyun.com/repository/public</url>
    7. <layout>default</layout>
    8. <releases>
    9. <enabled>true</enabled>
    10. </releases> <!--snapshots默认是关闭的,需要开启 -->
    11. <snapshots>
    12. <enabled>true</enabled>
    13. </snapshots>
    14. </repository>
    15. </repositories>
    16. <pluginRepositories>
    17. <pluginRepository>
    18. <id>aliyun</id>
    19. <name>Nexus Snapshot Repository</name>
    20. <url>https://maven.aliyun.com/repository/public</url>
    21. <layout>default</layout>
    22. <releases>
    23. <enabled>true</enabled>
    24. </releases>
    25. <snapshots>
    26. <enabled>true</enabled>
    27. </snapshots>
    28. </pluginRepository>
    29. </pluginRepositories>