Аргумент JCommander не работает в Docker ENTRYPOINT

У меня есть стандартный параметр JCommander, который отлично работает при локальном запуске jar или через IntelliJ, но как только я пытаюсь загрузить его через файл докеров, он возвращает:

Exception in thread "main" com.beust.jcommander.ParameterException: Was passed main parameter '-profile ${PROFILE}' but no main parameter was defined in your arg class

Код, через который я загружаю аргументы:

@Data
public static class Args {

    @Parameter(
            names = {"-profile", "-p"},
            arity = 1,
            required = true)
    private String profile;
}

Я разбираю это через:

 JCommander.newBuilder().addObject(ARGS).build().parse(args);

Команда точки входа у меня есть в моем Dockerfile:

ENTRYPOINT ["java" , "-jar", "/usr/app/app.jar", "-profile ${PROFILE}"]

Наконец, я просто запускаю контейнер обычным способом с помощью ...-e PROFILE=dev

Есть ли что-то очевидное, что я пропустил здесь, мне просто нужно где-то избегать кавычек или что-то в этом роде?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
238
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это была очевидная ошибка, на обнаружение которой у меня ушло больше времени, чем я готов признать. Правильный способ передачи аргументов, если конечно

ENTRYPOINT ["java" , "-jar", "/usr/app/app.jar", "-profile", "${PROFILE}"]

Обратите внимание на запятую между ключом -profile и его значением ${PROFILE}.

Другие вопросы по теме