docker-compose .yml文件中的变量替换

时间:2018-02-20 15:20:49

标签: docker docker-compose

我试图使用variable substitution进行批量声明。这导致了以下错误:

ERROR: for php  Cannot create container for service php: create .: volume name is too short, names should be at least two alphanumeric characters

Docker的撰写文件:

services:        
  php:
      image: php5-apache-composer
      volumes:
        - ${DIR}:/var/www/html

卷声明是否支持变量替换?我可以将环境变量用于除此之外的任何其他声明。

2 个答案:

答案 0 :(得分:1)

您需要在docker-compose.yaml所在的文件夹中使用.env文件,以便为docker-compose.yaml文件声明默认环境变量。

只需使用以下内容创建.env文件:

DIR=/var/www/html

当然,你可以在每个版本上做到这一点:

echo "DIR=/var/www/html" > .env && docker-compose up

答案 1 :(得分:1)

  

我已经export DIR="/var/www/html"sudo docker-compose run php -e DIR="/var/www/html"

sudo为其正在运行的命令创建了不同的环境,DIR变量在那里不存在。您可以使用简单的env命令检查:

$ export USER_VAR=test
$ sudo env | grep USER_VAR
$

要使其发挥作用,您需要:

  1. 创建.env并让docker-compose从中获取变量。
  2. 使用sudo -s运行shell并从那里以root身份运行这两个命令。
  3. 以sudo命令运行shell,例如:sudo /bin/sh -c "DIR=/var/www/html docker-compose run php -e DIR=/var/www/html"