2017-01-31 9 views
5

Вот мой докер-Compose:

version: '2' 
services: 
    couchpotato: 
    build: 
     context: ./couchpotato 
     dockerfile: Dockerfile 
    ports: 
    - 5050:5050 
    volumes: 
    - "${PWD}/couchpotato/data:/home/CouchPotato/data/" 
    - "${PWD}/couchpotato/config:/home/CouchPotato/config/" 

Когда я запускаю его внутри оболочки, в каталоге докер-compose.yml, я получаю:

WARNING: The PWD variable is not set. Defaulting to a blank string. 

и сочинение начинается с того, что PWD пуст.

Я не вижу никакой ошибки в файле, как показано здесь: https://docs.docker.com/compose/environment-variables/

+0

Что произойдет, если вы запустите 'env | grep PWD' из той же оболочки? – BMitch

+0

@BMitch Я получаю свой обычный PWD:/home/user/... и OLDPWD = ... –

+0

И это то же самое, что вы использовали для запуска команды docker-compose? Вы не запускали его с помощью какого-либо exec, через любой планировщик и т. Д.? Потому что, когда я запускаю что-то подобное локально, я не могу воспроизвести эту ошибку в bash. – BMitch

ответ

3

Вам не нужно ${PWD} для этого, вы можете просто сделать путь относительны и компоновать расширит его (одно существенное различие между составлять пути и обрабатываемые docker run).

version: '2' 
services: 
    couchpotato: 
    build: 
     context: ./couchpotato 
     dockerfile: Dockerfile 
    ports: 
    - 5050:5050 
    volumes: 
    - "./couchpotato/data:/home/CouchPotato/data/" 
    - "./couchpotato/config:/home/CouchPotato/config/" 

Что касается того, почему compose не видит эту переменную, это зависит от вашей оболочки. Compose ищет переменную экспортируемой среды, содержимое файла .env и флаги командной строки для команды docker-compose. Если каждый из них окажется пустым для переменной, вы получите это предупреждение.

+2

По какой-то причине Docker для Windows путается с относительными каталогами. Подход $ {PWD} работает лучше. –

+0

Я использую Docker для подсистемы Windows Linux. Я могу относиться к тому, что относительные пути (например, './Config/nginx') не работают и дают ошибку' not a directory'. По крайней мере, для меня. Использование '$ {PWD}' вместо '.' Задает проблему – boyd

Смежные вопросы