Как использовать переменные ENV в команде Dockerfile ENTRYPOINT

#docker #dockerfile #environment-variables

#докер #докерфайл #переменные среды

Вопрос:

Я совершенно новый пользователь Docker…

Я пытаюсь использовать переменные среды в своем файле Dockerfile…

Это похоже на то, что:

 FROM openjdk:11-jdk-slim-buster ENV JAVA_APP my-app EXPOSE 8080 COPY target/$JAVA_APP-*.jar /app/$JAVA_APP.jar CMD java -jar /app/$JAVA_APP.jar  

Результат таков: COPY команда получает значение JAVA_APP переменной. Но CMD команда этого не делает.

Есть ли какой-то другой способ использовать переменные ENV?

Комментарии:

1. Зачем вам здесь переменная окружения? Что произойдет, если я docker run -e JAVA_APP=something-else your-image ? (Обычно я бы считал, что расположение файловой системы изображения исправлено, и просто продолжайте, указывая пути и имена файлов с жестким кодом.)

Ответ №1:

Если я сделаю этот супер простой док-файл

 FROM ubuntu ENV JAVA_APP my-app CMD echo $JAVA_APP  

и создайте и запустите его с помощью

 docker build -t test . docker run --rm test docker run --rm -e JAVA_APP=Hello test  

Он печатает «мое приложение» и «Привет». Так что это действительно работает. Если это все еще не работает для вас, можете ли вы расширить свой пост с помощью команды, которую вы используете для запуска контейнера?