gpt4 book ai didi

docker - 如何在入口点脚本中通过 -e 键注入(inject)环境变量?

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

我需要在端口上启动我的应用程序,通过 docker run 中的 -e 键设置命令

我在 ENTRYPOINT 中运行我的应用程序脚本并尝试获取 $PORT env 变量,但没有任何 env 变量,通过 -e 键设置。

在 Dockerfile 中提供应用程序

ENTRYPOINT ["sh", "entrypoint.sh"]

entrypoint.sh 脚本:
#!/bin/bash

func start --port $PORT


docker 运行命令:
docker run -d -p 20937:8081 --name queue_0_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e PORT=8081

最佳答案

If I run this command locally I add image name like this: sudo docker run -p 15615:8081 30c7bb13d4b4 --name queue_2_middleware -e PORT=8081



这不会像你期望的那样,docker 命令行是顺序敏感的。图像名称后面的所有内容都用于替换 CMD 的值在你的图像里面。定义了入口点后,这些只是入口点脚本的参数。换句话说,docker 命令看起来像:
docker run ${args_to_run} ${image_name} ${cmd_override}

解决方法是使用 args 将命令重新排序为 run放在图像名称之前:
sudo docker run -p 15615:8081 --name queue_2_middleware -e PORT=8081 30c7bb13d4b4

关于docker - 如何在入口点脚本中通过 -e 键注入(inject)环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530938/

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