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