环境属性未注入到体积映射

时间:2019-07-01 05:17:25

标签: docker docker-compose

我在父目录中运行docker-compose,在子文件夹中运行-f docker-compose.yml。有人知道为什么这行不通吗? MY_VAR计算为空字符串

root-ui-e2e-ci:
    environment: 
      MY_VAR: ./hello
    env_file: ./.env
    volumes:
        - ${MY_VAR}:/app

我最终遇到此错误

  

.:卷名太短,名称至少应为两个字母数字   字符

2 个答案:

答案 0 :(得分:1)

取决于您的评论,hello is a string您需要像这样重写docker-compose

environment:
  MY_VAR: hello
volumes:
  - ../${MY_VAR}:/app

答案 1 :(得分:1)

environmentenv_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'