jua*_*cks 9 cloud conditional docker docker-compose devops
我想将卷添加到我的服务中,但前提是最终用户为其提供了一个文件夹。否则,不应安装任何卷,因为已准备好的映像在默认文件夹中具有有效数据。
也就是说,我想做类似的事情;伪代码:
services:
my_awesome_service:
volumes:
if ${VARIABLE} => ${VARIABLE}:/app/folder
Run Code Online (Sandbox Code Playgroud)
在docker-compose文件中建立这样的条件语句是否可行和可定义?我看到的使之成为可能的唯一方法是,首先定义一个基本的docker-compose文件,该文件没有卷挂载,并且仅在$VARIABLE定义了docker-compose文件后才对其进行调用。这对于单个或几个条件都很好,但是如果有很多条件,就会变得很讨厌。
有什么办法吗?
gat*_*ich 28
穷人的解决办法:
volumes:
${VARIABLE:-/dev/null}:/app/folder
Run Code Online (Sandbox Code Playgroud)
或者:
volumes:
${VARIABLE:-/dev/null}:${VARIABLE:-/tmp}/app/folder
Run Code Online (Sandbox Code Playgroud)
目前为止,docker-compose的格式不支持条件语句。
两种可能的解决方法是:
docker-compose.yaml:
command: ${COMMAND_PARAMS}
Run Code Online (Sandbox Code Playgroud)
重击:
#!/bin/bash
if test -z $CONDITION; then
params="-param1 ${MIPARAM1}"
else
params="-param1 ${MIPARAM1} -param2 ${MIPARAM2}"
fi
COMMAND_PARAMS=$params docker-compose up
Run Code Online (Sandbox Code Playgroud)
(感谢 github 上的原始海报,@shin-)
folder_defaults,然后始终在 docker-compose.yml 中定义卷,但最后,在 docker 映像中有一个内部脚本来检查卷文件夹是否为空,以及如果是这样的ln -s话folder_defaults;否则就保持原样。条件脚本示例:
if [ -z "$(ls -A /a/folder)" ]; then
do something... using /a/folder_defaults
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10252 次 |
| 最近记录: |