美文网首页JAVA开发springmvc学习程序员
Spring Boot 应用 Docker 镜像优化

Spring Boot 应用 Docker 镜像优化

作者: Anoyi | 来源:发表于2017-07-31 21:53 被阅读721次

    前言

    如何让 Spring Boot 应用的 docker 镜像体积更小?镜像制作速度更快?启动时参数可配置?

    实战

    1/ 先将 Spring Boot 应用打包:

    $ mvn clean package
    

    2/ 编写 Dockerfile,内容如下:

    FROM openjdk:8-jre-alpine
    
    ADD target/*.jar app.jar
    
    ENV ANY_REDIS_HOST=127.0.0.1 \
         ANY_REDIS_PORT=6379 \
         ANY_MARIADB_URL= \
         ANY_MARIADB_USERNAME= \
         ANY_MARIADB_PASSWORD=
    
    VOLUME /tmp
    
    CMD java -jar /app.jar \
        --spring.redis.host=$ANY_REDIS_HOST \
        --spring.redis.port=$ANY_REDIS_PORT \
        --spring.datasource.url=$ANY_MARIADB_URL \
        --spring.datasource.username=$ANY_MARIADB_USERNAME \
        --spring.datasource.password=$ANY_MARIADB_PASSWORD \
    

    其中 CMD 中的配置对应 Spring Boot 应用中 application.yml 的配置,打包前均可不填,使其能在 Docker 启动容器时再配置。

    # application.yml 片段
    # 数据库 及 Redis 配置    
    spring:
      redis:
        host:
      datasource:
        url:
        driver-class-name: org.mariadb.jdbc.Driver
        username:
        password:
    

    3/ 制作镜像

    $  docker build -t any-video .
    

    any-video 为镜像名, TAG 默认为 latest。

    4/ 查看镜像信息

    [root@SilenceMac any-video]# docker images
    REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
    any-video             latest              8681a026f5e2        13 minutes ago      113.1 MB
    

    经过各种对比,基于 openjdk:8-jre-alpine 制作的镜像体积小,消耗时间短,有更佳选择的欢迎指出!

    5/ 使用 Docker 启动应用,示例如下:

    $ docker run -d --name any-video -p 8080:8080 \
        -e ANY_REDIS_HOST=127.0.0.1 \
        -e ANY_REDIS_PORT=6379 \
        -e ANY_MARIADB_URL="jdbc:mysql://localhost:3306/any_db?useUnicode=true&characterEncoding=UTF-8" \
        -e ANY_MARIADB_USERNAME=root \
        -e ANY_MARIADB_PASSWORD=anycode any-video
    
    唯美画风

    相关文章

      网友评论

        本文标题:Spring Boot 应用 Docker 镜像优化

        本文链接:https://www.haomeiwen.com/subject/rhfdlxtx.html