zoukankan      html  css  js  c++  java
  • 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  -e  JAVA_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=test${EUREKA_PORT_A}:${EUREKA_HOST_A} --add-host=test${EUREKA_PORT_B}:${EUREKA_HOST_B} --add-host=test${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 

  • 相关阅读:
    IOS开发中针对UIImageView的几种常用手势
    VIew中的触摸事件 touchBegin 等一系列方法
    控制器的跳转-modal与push
    终于决定把自己的小窝从CSDN搬到博客园了
    UIView的frame和bounds区别
    android中数据存储的contentprovider的使用方法
    android中Json数据保存方式
    android手机操作SD的使用方法
    android手机中图片的拖拉及浏览功能
    android图片切换ImageSwichter的动画切换效果
  • 原文地址:https://www.cnblogs.com/a393060727/p/13595434.html
Copyright © 2011-2022 走看看