Я автоматизирую развертывание java-приложения в контейнере докеров в шаблонах cloudformation. Мне нужно настроить переменную env для журналов сбоев java, но мне нужно сохранить уникальный путь для каждого контейнера. Я не могу изменить образ докера или файл докера.
Для этого я использую $HOSTNAME из док-контейнера, который достаточно уникален. Проблема в том, что я не могу использовать ее как обычную переменную среды докера, потому что она устанавливается после запуска контейнера. Обойти это можно, изменив точку входа, установив переменную env и после этого запустив исходную точку входа.
EntryPoint:
- /bin/sh
- -c
- export JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/mnt/crashdumps/java_$HOSTNAME.hprof"
&& ./entrypoint.sh
(это облачный шаблон YAML для AWS::ECS::TaskDefinition, но то же самое можно выразить в docker cli)
Он работал нормально, пока провайдер контейнера java не изменил размещение сценария оболочки точки входа. Теперь внедрение оболочки выглядит очень грязным в коде, потому что мне нужно проверить, существует ли файл и требует дополнительного обслуживания (например, если путь к точке входа или имя файла будут снова изменены).
Есть ли лучший способ:
- динамически настроить путь с именем контейнера, используя метод, отличный от точки входа модификации; или же
- ввести только команду «экспорт» и запустить исходную точку входа, независимо от имени и пути?