Docker建構Java程式鏡像
- 1. 母鏡像選擇
- 2. 基礎鏡像制作
- 3. 業務鏡像制作
制作鏡像的時候分為
母鏡像
(docker hub或私庫裡面的)
基礎鏡像
通過封裝母鏡像做的基于此的鏡像
就是jar包放進去的鏡像
業務鏡像
1. 母鏡像選擇
為什麼用openjdk:8-jre-alpine
鏡像名 | 版本 | 所占大小 |
openjdk | 8-jre-alpine | 84.9MB |
java | 8-jre-alpine | 108MB |
java | 8 | 643MB |
2. 基礎鏡像制作
建立 Dockerfile
設定如下:
# linux,jre基礎鏡像
FROM openjdk:8-jre-alpine
# 作者資訊
MAINTAINER Jack Wei <[email protected]>
# 更新時區
RUN apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
建立鏡像, 如果沒有私庫請去掉 私庫位址
docker build -t 私庫位址/library/base:1.0 -f Dockerfile .
如果沒有私庫請去掉 私庫位址
docker push 私庫位址/library/base:1.0
啟動驗證 如果沒有私庫請去掉 私庫位址
# 啟動鏡像, --name指定名稱啟動
docker run -di --name=mybase 私庫位址/library/base:1.0
# 進入鏡像
docker exec -it mybase /bin/sh
可以看到占的記憶體也很少
3. 業務鏡像制作
如果沒有私庫請去掉 私庫位址
# 基礎鏡像
FROM 私庫位址/library/base:1.0
# 作者資訊
MAINTAINER Jack Wei <[email protected]>
# 将目前的jar拷貝到容器home下面
ADD forestweb.jar /home/forestweb.jar
ENTRYPOINT ["java","-jar","forestweb.jar","--spring.profiles.active=prod","--server.port=8082"]
# 挂載到本地
VOLUME ["/home/docker/log/forest"]
# 工作目錄, 直接進到home下面
WORKDIR /home
目前目錄如下:
建立鏡像, 如果沒有私庫請去掉 私庫位址
docker build -t 61.164.255.62:19066/forest/forestweb:1.0.0 -f Dockerfile .
啟動驗證 如果沒有私庫請去掉 私庫位址
# 啟動鏡像, -id背景互動啟動 --name指定名稱 -v挂載卷
docker run -id -p 18081:8082 -v /home/logs/forestweb:/home/logs --name=forestweb 61.164.255.62:19066/forest/forestweb:1.0.0
# 進入鏡像
docker exec -it forestweb /bin/sh