【发布时间】:2022-01-15 11:30:57
【问题描述】:
我正在尝试通过 bash 脚本设置 docker 容器的环境变量。
CMD ["/bin/bash", "-c","source runservice.sh"]
runservice.sh
#!/usr/bin/env bash
export "foo"="bar"
现在,当我进入容器并执行 printenv 后,它没有设置环境变量。 但是如果我在容器内运行相同的命令,环境变量就会被设置。 使用 bash 脚本导出的正确方法是什么?
【问题讨论】:
-
您实际上是如何启动容器的? (我希望带有
CMD的容器立即退出。)如果可以的话,我更喜欢 DockerfileENV指令(另见In a Dockerfile, How to update PATH environment variable?),或者入口点包装脚本。 -
由于有一些限制,我不能使用 ENV 指令。 docker stack deploy 启动容器。
-
我也尝试过使用 Entrypoint,但这也没有设置 env 变量。我错过了什么?
-
运行一个shell,改变那个 shell的环境,然后那个shell退出。您无法通过运行其他命令来修改您的环境。
-
感谢您的解释。实际上我正在尝试实现这一点:medium.com/@adrian.gheorghe.dev/… 如果您在容器入口点中读取最后一点,请为您设置的每个环境变量调用以下函数。 .如果我们不能修改 env 变量,那么容器入口点是什么?我有什么遗漏的吗?
标签: bash docker shell docker-compose sh