繁体   English   中英

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

[英]Variable substitution in docker-compose .yml file

我试图将变量替换用于卷声明。 这导致了错误的错误:

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

Docker的Compose文件:

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

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

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

只需创建具有以下内容的.env文件:

DIR=/var/www/html

当然,您可以像这样在每个构建上都做到这一点:

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

我已经运行了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然后让.env docker-compose从中获取变量。
  2. 使用sudo -s运行一个shell,然后以root用户身份运行两个命令。
  3. 运行外壳程序作为sudo命令,例如: sudo /bin/sh -c "DIR=/var/www/html docker-compose run php -e DIR=/var/www/html"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM