【发布时间】:2019-01-09 13:15:35
【问题描述】:
我想在我的 Dockerfile 中设置一个环境变量。
我有一个如下所示的.env 文件:
FOO=bar。
在我的 Dockerfile 中,我有一个命令可以解析该文件的内容并将其分配给 FOO。
RUN 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'
我遇到的问题是上面的脚本没有返回我需要的内容。事实上,它不会返回任何东西。
当我运行 docker-compose up --build 时,它会因为这个错误而失败。
The command '/bin/sh -c 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'' returned a non-zero code: 127
我知道命令 /bin/sh -c 'echo "$(cut -d'=' -f2 <<< $(grep FOO .env))"' 会生成正确的输出,但我不知道如何将该输出分配给环境变量。
对我做错了什么有什么建议吗?
【问题讨论】:
-
这里有几个问题。您想要在映像中设置这些变量,用于构建的其余部分,还是只需要一个运行命令?您是否将 .env 文件复制到图像中?除了 127 错误,您是否从构建中获得任何其他日志?
-
我添加了文件(而不是副本)。我正在尝试设置一个容器范围的环境变量。
-
在记录错误方面没有得到更多。
-
请注意,
<<<不是 standard 重定向运算符,并且一些轻量级基础映像的 shell 实现的很少,不在标准中。
标签: shell docker docker-compose sh posix