Насколько мне известно, вы не можете ссылаться на свои переменные env, определенные в файле compose позже, в том же файле compose и интерпретировать их.Ваше определение $ APPDATA работает, поскольку оно установлено в среде хоста, а не в файле compose.
Я протестировал оба, используя переменную env и файл .env с compose 2.3 и 3, но ни один из них не работал.
Я рекомендую обернуть ваш составной файл в скрипт запуска, в котором вы можете установить переменные, необходимые в вашей командной оболочке, чтобы вы могли правильно их интерпретировать.Если вы развертываете с помощью стандартного инструмента, такого как ansible, jenkins и т. Д., Все они могут установить переменные для вас.Это может выглядеть следующим образом:
#!/bin/bash
export PROJECT_NAME=foo
docker-compose up -d
unset PROJECT_NAME
Хотя это может не сработать для создания томов, если вам просто нужна переменная для выполнения чего-либо во время выполнения контейнера (например, установка другой переменной среды), это может бытьположить в сценарий входа также.