Передать переменную локальной среды в докер

Это может быть общая проблема с докером, но мой вариант использования — docker-compose:

Мне нужно передать имя хоста моей машины в качестве переменной среды в контейнер, который будет создан с помощью docker-compose. Этот конкретный контейнер использует Dockerfile и использует в нем флаг «cmd». Команда в «cmd» использует эту переменную среды. Может кто-нибудь помочь?


person 208rishabh    schedule 24.09.2015    source источник
comment
ответ: github.com/docker/compose/issues/2091   -  person dnephin    schedule 24.09.2015
comment
спасибо @dnephin, все работает :)   -  person 208rishabh    schedule 25.09.2015


Ответы (1)


Если вы можете переписать Dockerfile, чтобы включить имя хоста в ENV инструкцию, как указано в выпуске 1136, это сработает:

FROM centos:latest
ENV BLABLA hello
RUN echo $BLABLA 
# outputs: "hello"

Если это чисто значение переменной среды выполнения, оно должно быть включено в docker 1.9 с issue 14634: Builder - Передача аргументов во время сборки (например, HTTP_PROXY):

Тем временем в OP 208rishabh упоминается выпуск 2091 для docker compose, ответ dnephin:

environment или env_file оба должны работать:

Вы можете оставить значение пустым, и оно будет принимать значение из текущей среды:

environment:
   HOST_HOSTNAME:

Это позволяет:

HOST_HOSTNAME=$(hostname) docker-compose up
person VonC    schedule 24.09.2015
comment
Первое решение потребует от меня жестко закодировать значение переменной окружения. Я хочу что-то динамичное. Значение переменной env во время выполнения кажется крутым :) На данный момент решение здесь: github.com /docker/compose/issues/2091 - person 208rishabh; 25.09.2015
comment
@ 208rishabh Отлично: я включил ваше решение проблемы GitHub в ответ для большей наглядности. - person VonC; 25.09.2015