Ниже приведен фрагмент моего 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"
Я что-то упустил?