Dockerfile傳入變量問題
-
目的:想在yaml文件中重新定義容器內的jvm參數。
-
解決:使用ENTRYPOINT 執行,帶上變量。
Dockerfile的編寫
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER vbaas@vonechain.com
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 7093
RUN mkdir -p /vbaas-api
WORKDIR /vbaas-api
ADD ./target/vbaas-api-biz.jar ./
CMD sleep 10
ENTRYPOINT java ${JVM:=-Xms1024m -Xmx1024m} -Djava.security.egd=file:/dev/./urandom -jar /vbaas-api/vbaas-api-biz.jar
說明:ENTRYPOINT java ${JVM:=-Xms1024m -Xmx1024m} -Djava.security.egd=file:/dev/./urandom -jar /vbaas-api/vbaas-api-biz.jar
${JVM:=-Xms1024m -Xmx1024m}
定義變量jvm並且帶默認值為-Xms1024m -Xmx1024m
yaml編排容器配置
version: '3'
services:
vbaas-api:
image: 10.10.3.13:8082/vbaas-api:latest
volumes:
- /data/vbaas:/data/vbaas
- /mnt/nfs/vbaas:/mnt/nfs/vbaas
environment:
- NACOS-NAMESPACE=test
- NACOS_HOST=10.10.3.XX
- JVM=-Xms512m -Xmx512m
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
networks:
- vbaas
networks:
vbaas:
external:
name: vbaas
說明: - JVM=-Xms512m -Xmx512m
這個環境變量的配置會覆蓋dockerfile里面的默認值。注意變量不需要帶雙引號或者單引號。
可以通過啟動的容器進行查看。
在yaml文件中注釋掉- JVM=-Xms512m -Xmx512m
,再重啟容器,jvm參數會使用默認值: