我试图使用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
卷声明是否支持变量替换?我可以将环境变量用于除此之外的任何其他声明。
答案 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
$
要使其发挥作用,您需要:
.env
并让docker-compose
从中获取变量。sudo -s
运行shell并从那里以root身份运行这两个命令。sudo /bin/sh -c "DIR=/var/www/html docker-compose run php -e DIR=/var/www/html"