1. 程式人生 > 實用技巧 >docker run容器 設定 jvm 執行springboot 程式

docker run容器 設定 jvm 執行springboot 程式

首先dockerfile中需要設定一個變數

比如我Dockerfile內容

FROM openjdk:8-jre-alpine
VOLUME /tmp
ADD *.jar app.jar
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#設定變數 JAVA_OPTS ENV JAVA_OPTS
=""
#這樣寫會以shell方式執行,會替換變數 ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
#下面這樣寫法不行,他只是拼接不會識別變數 #ENTRYPOINT [
"java","${JAVA_OPTS}","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"] EXPOSE 30100

然後

執行docker run命令

意思是執行時通過-e重置覆蓋環境變數中JAVA_OPTS引數資訊。

docker run -eJAVA_OPTS='-Xmx1344M -Xms1344M -Xmn448M -XX:MaxMetaspaceSize=192M -XX:MetaspaceSize=192M'

如下:

         sh "docker login -u ${REGISTRY_UID} -p ${REGISTRY_PID} ${REGISTRY_URL}
" echo "說明:docker run -p 外部埠:內部埠 -m 上限500m --異常重啟 -e引數,這裡注入註冊中心 --name專案名稱 映象地址" sh "docker run --restart=always -p ${OUT_PORT}:${IN_PORT} "+ "-d -v ${LOG_PATH}:${LOG_PATH} "+ "-m 1000M --memory-swap -1 "+ // jvm設定2G記憶體=============這裡是設定記憶體 "-e JAVA_OPTS='-Xmx1344M -Xms1344M -Xmn448M -XX:MaxMetaspaceSize=192M -XX:MetaspaceSize=192M' "+
// 設定外部IP "-e eureka.instance.ip-address=${nodeIp} "+ // 設定外部埠 "-e eureka.instance.non-secure-port=${OUT_PORT} "+ "--add-host=milike${EUREKA_PORT_A}:${EUREKA_HOST_A} --add-host=milike${EUREKA_PORT_B}:${EUREKA_HOST_B} --add-host=milike${EUREKA_PORT_C}:${EUREKA_HOST_C} "+ "--name ${PROJECT_NAME} "+ " $REPOSITORY" echo "釋出映象完成${REPOSITORY}"

最後,在docker容器中,執行

進入容器

docker exec -it 容器ID/名稱 /bin/bash

檢視java應用,就可以看到

ps -ef | grep java

結果如下:

/myapp # ps -ef| grep java
    1 root      2:49 java -Xmx1344M -Xms1344M -Xmn448M -XX:MaxMetaspaceSize=192M -XX:MetaspaceSize=192M -Djava.security.egd=file:/dev/./urandom -jar /app.jar
  466 root      0:00 grep java

另:某位大神給出個比較合理的設定jvm引數。大多數機器都可以採用

分配記憶體 堆配置推薦 
2G -Xmx1344M -Xms1344M -Xmn448M -XX:MaxMetaspaceSize=192M -XX:MetaspaceSize=192M 
3G -Xmx2048M -Xms2048M -Xmn768M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M 
4G -Xmx2688M -Xms2688M -Xmn960M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M 
5G -Xmx3392M -Xms3392M -Xmn1216M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M 
6G -Xmx4096M -Xms4096M -Xmn1536M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M 
7G -Xmx4736M -Xms4736M -Xmn1728M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M 
8G -Xmx5440M -Xms5440M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M