Как указано в https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact,, если объединить «форму оболочки» CMD
и ENTRYPOINT
, спецификация CMD
будет опущена:
![Exerpt from docs.docker.com](https://i.stack.imgur.com/MJmi9.png)
Так что вам лучше использовать «форму exec» и написать что-то вроде этого:
…
ENTRYPOINT ["/usr/bin/chamber", "exec", "${ENV}_${SERVICE_NAME}", "-r", "1", "--", "./entrypoint.sh"]
CMD ["java -jar", "-Dspring.profiles.active=docker", "target/my.jar"]
Однако это не будет работать как , потому что${ENV}
и ${SERVICE_NAME}
не будут расширены (поскольку потребуется оболочка).
Таким образом, самое простое и правильное решение - применить рефакторинг вашего entrypoint.sh
,или если вы не хотите изменять его и по-прежнему полагаться на переменные окружения с "exec form" ENTRYPOINT
, вы можете написать вместо этого:
…
RUN chmod a+x entrypoint1.sh
ENTRYPOINT ["./entrypoint1.sh"]
CMD ["java -jar", "-Dspring.profiles.active=docker", "target/my.jar"]
с файлом
entrypoint1.sh
#!/bin/bash
exec /usr/bin/chamber exec ${ENV}_${SERVICE_NAME} -r 1 -- ./entrypoint.sh "$@"