Fel*_*ikZ 8 environment-variables multiline docker
我有多行环境变量:
SINGLE_LINE=VALUE
MULTI_LINE=VA
LU E
Run Code Online (Sandbox Code Playgroud)
我想使用文件通过--env-file的参数传递此环境变量docker run。当我使用 将此文件传递到 Docker 容器时--env-file,它失败并显示一条消息:
SINGLE_LINE=VALUE
MULTI_LINE=VA
LU E
Run Code Online (Sandbox Code Playgroud)
docker: poorly formatted environment: variable 'LU E' contains whitespaces.
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
出现此问题的原因是 docker 解析此文件的方式不接受键名称中的多行字符串和空格。参见相关问题。
解决方法。从多行变量中去除所有行结尾:
>.env
for var in $(compgen -v | grep -Ev '^(BASH)'); do
var_fixed=$(printf "%s" "${!var}" | tr -d '\n' )
echo "$var=${var_fixed}" >>.env
done
Run Code Online (Sandbox Code Playgroud)
每行解释:
>.env- 使其.env成为一个空文件for var in $(compgen -v | grep -Ev '^(BASH)'); do- 迭代环境键var_fixed=$(printf "%s" "${!var}" | tr -d '\n' )- 从键值中删除换行符echo "$var=${var_fixed}" >>.env- 将键=值对.env写入文件对我来说,这是由于文件export中包含以下内容引起的.env:
export ENDPOINT=https://endpoint.io
Run Code Online (Sandbox Code Playgroud)
相反做
ENDPOINT=https://endpoint.io
Run Code Online (Sandbox Code Playgroud)
另请参阅:https ://github.com/docker/for-linux/issues/701#issuecomment-506884219
| 归档时间: |
|
| 查看次数: |
14196 次 |
| 最近记录: |