gpt4 book ai didi

docker - docker-compose没有在/var/profile.d中看到设置的主机环境变量

转载 作者:行者123 更新时间:2023-12-02 18:29:53 25 4
gpt4 key购买 nike

下面是我的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" ]

问题是,即使在我当前的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是可见的并且确实起作用。这些环境变量之间的唯一区别是 GOPATH是在 /etc/profile.d/go.sh中设置的:
export GOROOT="/usr/local/go"
export PATH="$PATH:$GOROOT/bin"

我想念什么吗?

最佳答案

您使用sudo执行docker-compose。未设置您的变量,很可能是因为使用sudo How to keep environment variables using sudo 时不会保留环境变量。

关于docker - docker-compose没有在/var/profile.d中看到设置的主机环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50729569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com