gpt4 book ai didi

docker - 不会覆盖Docker容器上的环境变量

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

我是Docker的新手,并且在Docker容器中运行了Nextjs应用程序。该应用程序使用了一些环境变量来与服务器通信。这是出现问题的地方。出于某种原因,在运行容器并传递env变量时,会创建它们。使用 docker 检查containerId 我可以看到正确的值。但是,当真正调用服务器时,值(服务器ID)是在构建中设置的值。

构建图像并传递参数。假设SERVER_API = 127.1.2.3

docker build -t miTestImage --build-arg SERVER_API=$(SERVER_API) --rm --no-cache myNextjsApp/

通过运行以下命令,我可以看到设置了正确的值。
docker image inspect imageId

但是,运行图像时
docker run -itd -e SERVER_API=http://127.0.3.9:4000 --name myContianerApp -p 5000:5000 --rm imageId

并将请求发送到服务器,它使用的是旧值(127.1.2.3)而不是新值( http://127.0.3.9:4000)

并通过执行以下操作:
docker inspect myContianerApp,

我可以看到正确添加了新值,但我不明白为什么应用程序未继续使用它。

我正在阅读 article,其中有下图。我正在执行相同的步骤,但不适用于我。我想念什么吗?

任何帮助/线索都非常感谢。

enter image description here

最佳答案

这是一个工作示例:

FROM busybox
ARG SERVER="google.com"
ENV SERVER=${SERVER}
ENTRYPOINT "/bin/ash" "-c" "ping ${SERVER}"

然后:

docker build --tag=62270940 --file=./Dockerfile .

docker inspect 62270940 --format="{{.Config.Env}}"
[PATH=... SERVER=google.com]

docker run \
--interactive --tty \
62270940
PING google.com (172.217.14.238): 56 data bytes
64 bytes from 172.217.14.238: seq=0 ttl=52 time=13.850 ms
64 bytes from 172.217.14.238: seq=1 ttl=52 time=11.494 ms

docker run \
--interactive --tty \
--env=SERVER="stackoverflow.com" \
62270940
PING stackoverflow.com (151.101.1.69): 56 data bytes
64 bytes from 151.101.1.69: seq=0 ttl=55 time=13.763 ms
64 bytes from 151.101.1.69: seq=1 ttl=55 time=13.800 ms
64 bytes from 151.101.1.69: seq=2 ttl=55 time=25.678 ms

关于docker - 不会覆盖Docker容器上的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270940/

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