我在父目录中运行docker-compose,在子文件夹中运行-f docker-compose.yml。有人知道为什么这行不通吗? MY_VAR计算为空字符串
root-ui-e2e-ci:
environment:
MY_VAR: ./hello
env_file: ./.env
volumes:
- ${MY_VAR}:/app
我最终遇到此错误
.:卷名太短,名称至少应为两个字母数字 字符
答案 0 :(得分:1)
取决于您的评论,hello is a string
您需要像这样重写docker-compose
:
environment:
MY_VAR: hello
volumes:
- ../${MY_VAR}:/app
答案 1 :(得分:1)
在environment
和env_file
中指定的变量未用于撰写文件,它将直接传递到容器。
对于docker-compose.yaml
中的变量替换,您可以使用以下两种解决方案,并使用docker-compose config
快速检查效果:
解决方案1:
在运行docker-compose
的同一shell中使用变量export:
docker-compose.yaml:
version: '3'
services:
root-ui-e2e-ci:
image: ubuntu
volumes:
- ${MY_VAR}:/app
尝试命令:
$export MY_VAR=./hello
$docker-compose config
services:
root-ui-e2e-ci:
image: ubuntu
volumes:
- /home/shubuntu1/99/hello:/app:rw
version: '3.0'
解决方案2:
使用.env
:
在.env
的同一文件夹中设置docker-compose.yaml
文件:
.env:
MY_VAR=./hello
docker-compose.yaml:
version: '3'
services:
root-ui-e2e-ci:
image: ubuntu
volumes:
- ${MY_VAR}:/app
尝试命令:
$unset MY_VAR
$docker-compose config
services:
root-ui-e2e-ci:
image: ubuntu
volumes:
- /home/shubuntu1/99/hello:/app:rw
version: '3.0'