docker-compose не видит переменную среды хоста, установленную в /var/profile.d - PullRequest
0 голосов
/ 07 июня 2018

Ниже приведен фрагмент моего docker-compose.yaml, где я пытаюсь передать переменную окружения (т.е. $GOPATH) в мой Dockerfile:

kontrol:
  container_name: 'kontrol'
  build:
    context: '.'
    dockerfile: 'Dockerfile'
    args:
      gopath: '${GOPATH}'
  volumes:
    - '/certs:${HOME}/.kite/certs'
  ports:
    - '6000:6000'
  depends_on:
    - 'etcd'

А вот фактическое Dockerfile:

FROM scratch
ARG gopath
ADD ${gopath}/bin/kontrol /
ENV KONTROL_PORT=6000 \
    KONTROL_USERNAME="gonzo" \
    KONTROL_STORAGE="etcd" \
    KONTROL_MACHINES="http://etcd:2379" \
    KONTROL_KONTROLURL="http://kontrol:6000/kite" \
    KONTROL_PUBLICKEYFILE="/certs/key_pub.pem" \
    KONTROL_PRIVATEKEYFILE="/certs/key.pem" \
    KITE_ENVIRONMENT="dev" \
    KITE_REGION="ch"
CMD [ "/kontrol -initial", "/kontrol" ]

Проблема в том, что даже если в моей текущей оболочке определено GOPATH ...

[j3d@pc-5]$ echo $GOPATH
/home/j3d/Projects/go

... docker-compose не видит его:

[j3d@pc-5 test]$ sudo docker-compose -f docker-compose.yaml up -d
WARNING: The GOPATH variable is not set. Defaulting to a blank string.
...

Странно, переменная окружения HOME видна и работает.Единственная разница между этими переменными среды заключается в том, что GOPATH установлен в /etc/profile.d/go.sh:

export GOROOT="/usr/local/go"
export PATH="$PATH:$GOROOT/bin"

Я что-то упустил?

1 Ответ

0 голосов
/ 07 июня 2018

Вы выполняете docker-compose с sudo.Ваша переменная не установлена, скорее всего, потому что переменные окружения не сохраняются при использовании sudo Как сохранить переменные окружения с помощью sudo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...