docker compose未在/var/profile.d中看到主机环境变量集
下面是我的docker compose未在/var/profile.d中看到主机环境变量集,docker,docker-compose,Docker,Docker Compose,下面是我的docker compose.yaml的一个片段,我试图将环境变量(即$GOPATH)传递给我的Dockerfile: kontrol: container_name: 'kontrol' build: context: '.' dockerfile: 'Dockerfile' args: gopath: '${GOPATH}' volumes: - '/certs:${HOME}/.kite/certs' ports:
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'
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" ]
下面是实际的Dockerfile
:
kontrol:
container_name: 'kontrol'
build:
context: '.'
dockerfile: 'Dockerfile'
args:
gopath: '${GOPATH}'
volumes:
- '/certs:${HOME}/.kite/certs'
ports:
- '6000:6000'
depends_on:
- 'etcd'
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" ]
问题是,即使在我当前的shell中定义了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
是可见的,并且可以工作。这些环境变量之间的唯一区别是在/etc/profile.d/go.sh
中设置了GOPATH
:
export GOROOT="/usr/local/go"
export PATH="$PATH:$GOROOT/bin"
我遗漏了什么吗?您使用
sudo
执行docker compose。您的变量没有设置,很可能是因为在使用sudo时没有保留环境变量 使用sudo的-E
开关来保留env变量。也可以使用docker而不使用sudo。啊,好的,我明白了。非常感谢:-)@b0gusb,前提是你明白后果。