Если вам нужен динамически сгенерированный путь для ваших журналов сбоев java, я бы предложил динамически сгенерировать уникальное имя в самом скрипте точки входа docker.
Как этот, который я тестировал и отлично работает.
#!/bin/sh
# Create some random file in /tmp
filename=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '')
touch /tmp/$filename
cat /tmp/$filename
export filename=$filename
Каждый раз, когда я запускаю этот скрипт, это происходит, когда вы порождаете такие несколько контейнеров.Он будет генерировать файлы в /tmp
со случайными именами.
$ ls /tmp/
DzJXInMvJAgvN f0rgIMIt115h7 sSgVDXj2zvRTh x4dBEciezQnix
Таким образом, в этом случае точка входа будет генерировать уникальное имя при каждом вызове, поэтому не будет необходимости вызывать что-либо до docker entrypoint
.
Надеюсь, это поможет.
Обновление
Пока я понимаю, что вы хотите переопределить путь к файлу журналов сбоев Java, не редактируя dockerfile илисценарий входа.Опция -XX:HeapDumpPath
, равная JAVA_OPTS
, если я прав.
Вы можете попробовать это
$ docker run -itd --env JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/mnt/crashdumps/java_$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '').hprof" alpine sh
$ docker exec -it 75f062ff8906 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=75f062ff8906
TERM=xterm
JAVA_OPTS= -XX:HeapDumpPath=/mnt/crashdumps/java_MyRZcSKxFtZaF.hprof
HOME=/root
Как видите, JAVA_OPTS
переопределяется с соответствующим именем файла.Надеюсь, это поможет, дайте мне знать.