docker容器上的环境变量未被覆盖

问题描述 投票:0回答:1

我是Docker的新手,并且我在Docker容器中运行了一个Nextjs应用程序。该应用程序使用了一些环境变量来与服务器通信。这是出现问题的地方。出于某种原因,在运行容器并传递env变量时,将它们创建为OK。使用docker inspect 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

docker docker-compose dockerfile next.js docker-registry
1个回答
0
投票
FROM busybox ARG SERVER="google.com" ENV SERVER=${SERVER} ENTRYPOINT "/bin/ash" "-c" "ping ${SERVER}"

然后:

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

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
© www.soinside.com 2019 - 2024. All rights reserved.