【发布时间】:2019-12-03 12:43:21
【问题描述】:
我创建了一个自定义 docker 容器,它调用了一个启动脚本。该脚本需要一些数据,这些数据存储在我的.env 文件中。
所有文件所需的所有变量都存储在.env 中,这就是我想要保留它的地方。我可以以这种方式传递变量而不会出错...只是 arrays 我无法正确传递。
.env:
FOO=1 # blah
BAR='bar' # this does blah
MYARRAY=(
hello # blah
world # blah
)
docker-compose.yml:
mycontainer:
env_file: .env
build:
context: .
args: # pass variables into dockerfile
FOO: ${FOO}
MYARRAY: ${MYARRAY}
Dockerfile:
FROM some_app
ARG FOO
ARG MYARRAY
ENV \
FOO=$FOO \
MYARRAY=$MYARRAY # pass variables into script
CMD [ "myscript.sh" ]
myscript.sh:
#!/bin/bash
set -Eeuo pipefail
echo "$FOO" # works
for i in "${MYARRAY[@]}"; do echo "$i"; done # <---- problem is here
数组在脚本中没有完整地到达 - 它以"(" 到达。这是因为它是从 ini 到 yaml 到 dockerfile 语法到 bash 的“翻译”。
如何对.env 中的内容进行转义/格式化,以便正确到达 bash 脚本?
【问题讨论】:
标签: linux bash docker docker-compose yaml