我试图通过bash脚本设置docker容器的环境变量。
CMD ["/bin/bash", "-c","source runservice.sh"]
运行service.sh
#!/usr/bin/env bash
export "foo"="bar"
现在,当我进入容器并执行printenv时,它并没有设置环境变量。但如果我在容器中运行相同的命令,env变量就会被设置好。使用bash脚本导出的正确方法是什么?
它没有设置环境变量
它为CMD
构建阶段的持续时间设置环境。当然,它对其他任何事情都没有影响——在CMD
阶段运行的shell将退出。请参阅dockerfile文档。
使用bash脚本导出的正确方法是什么?
没有正确的方法。影响环境的正确方法是使用ENV
。
在使用入口点的上下文中有一种解决方法——您可以将入口点设置为首先获取变量的shell(或自定义进程(。
ENTRYPOINT ["bash", "-c", "source runservice.sh && "$@"", "--"]