我如何在没有外壳扩展的情况下在JVM启动选项中使用环境变量

时间:2018-08-31 16:23:28

标签: java docker

我想在JVM启动时使用环境变量来设置-XX:HeapDumpPath选项。此外,我希望它可以在Docker容器内工作,并且使JVM进程获得PID1。这似乎使this问题中提出的所有解决方案都对我的情况无效。

我当前的解决方案如下:

  • Dockerfile

    FROM openjdk:10
    
    COPY . .
    
    ENTRYPOINT [ "./start.sh" ]
    
  • start.sh

    #!/usr/bin/env bash
    
    exec java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${HEAP_DUMP_PATH} -jar build/libs/app.jar
    

如果我使用docker build --tag=test .构建它,然后使用CID=$(docker run --rm -e HEAP_DUMP_PATH="/tmp" -d test) && docker exec $CID ps -f运行,则会得到:

  

UID PID PPID C STIME TTY TIME CMD
  根1 0 0 16:18 00:00:00 java -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = / tmp -jar build / libs / app.jar
  根21 0 0 16:18 00:00:00 ps -f

所以它似乎正在工作。但这似乎也不必要地复杂。有没有更好/更清洁的方法来实现这一目标?

更新:在-c中删除了exec -c

0 个答案:

没有答案