У меня есть стандартный параметр 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
Есть ли что-то очевидное, что я пропустил здесь, мне просто нужно где-то избегать кавычек или что-то в этом роде?




Это была очевидная ошибка, на обнаружение которой у меня ушло больше времени, чем я готов признать. Правильный способ передачи аргументов, если конечно
ENTRYPOINT ["java" , "-jar", "/usr/app/app.jar", "-profile", "${PROFILE}"]
Обратите внимание на запятую между ключом -profile и его значением ${PROFILE}.