JAVA开发springmvc学习程序员

Spring Boot 应用 Docker 镜像优化

2017-07-31  本文已影响721人  Anoyi

前言

如何让 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
唯美画风
上一篇 下一篇

猜你喜欢

热点阅读