我有一个docker-compose.yml文件,它定义了如下的volumes部分:
volumes:
seqfs:
driver: azure_file
driver_opts:
share_name: seqtest
storage_account_name: stacctest
storage_account_key: ${STORAGE_ACCOUNT_KEY}
我尝试在构建命令期间传入STORAGE_ACCOUNT_KEY:
docker-compose -f docker-compose.yml build --build-arg STORAGE_ACCOUNT_KEY="##########"
但返回错误:
未设置STORAGE_ACCOUNT_KEY变量。默认为空字符串。
请注意,出于安全原因,我不想将STORAGE_ACCOUNT_KEY保存到.env之类的文件中--我想从命令行传递它。
我如何将一个参数传递给我的docker-compose.yml中的volumes部分?
1条答案
按热度按时间cngwdvgl1#
关于您收到的错误:
--build-arg
只处理Dockerfile中的**ARG
**指令。docker-compose up --build
更简单而不是运行
docker-compose build
*,然后运行 *docker-compose up
)1.将
STORAGE_ACCOUNT_KEY=foobar
放入.env
文件并运行
docker-compose up --build
1.或将
STORAGE_ACCOUNT_KEY=foobar
放入other.env
文件中并运行
docker-compose --env-file=other.env up --build
(**注意:**docer/compose语法包含两种不同的
"env-file"
,有关这一微妙之处的详细信息,请参见this answer of mine: Pass variables from .env file to dockerfile through docker-compose。)1.或运行
STORAGE_ACCOUNT_KEY=foobar docker-compose up --build
结论:
您说您 * 出于安全原因 * 不想将STORAGE_ACCOUNT_KEY保存到.env之类的文件中,因此乍看起来您只会接受上面的解决方案3。
但是,请注意,如果您不信任Docker主机的环境,则3.不太可能更安全。实际上,
.env
文件可能会受到文件权限(和.gitignore
FWIW)的保护,而上面的foobar
字符串会自动泄漏正在运行的进程的名称(例如ps aux | grep STORAGE_ACCOUNT_KEY
)。