Docker compose将找不到$ PWD环境变量

时间:2017-01-31 01:15:24

标签: shell docker environment-variables

这是我的docker-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/"

当我在shell中运行它时,在docker-compose.yml的目录中,我得到:

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

并且撰写以PWD为空开始。

我没有在文件中看到任何错误,如下所示:https://docs.docker.com/compose/environment-variables/

6 个答案:

答案 0 :(得分:17)

你不需要${PWD},你只需要使路径相对而且compose会扩展它(compose路径和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没有看到这个变量,这取决于你的shell。 Compose查找导出的环境变量,.env文件的内容以及docker-compose命令的命令行标志。如果每个变量都为空,那么你就会收到警告。

答案 1 :(得分:7)

我的建议:将所有$PWD更改为.

答案 2 :(得分:6)

如果您使用sudo运行,则$ PWD将不起作用。尝试从Docker for Linux https://docs.docker.com/engine/install/linux-postinstall/中推荐的设置。

Sudo将以不同的env用户身份运行。

$ sudo env | grep -i pwd
$ env | grep -i pwd
PWD=/home/user
OLDPWD=/

答案 3 :(得分:0)

我的一个环境变量有相同的问题。在更仔细地查看我的bashrc文件时,我发现我没有导出该变量。
之前:
VAR=<value>
之后:
export VAR=<value>

答案 4 :(得分:0)

如果您really need absolute paths,则在调用 docker-compose up 之前调用它:

set PWD=%CD%

答案 5 :(得分:-5)

在Windows上,我遇到了同样的问题。

为解决“ mariadb不断重启”问题,我使用的是这个

mariadb:
  image: mariadb
  volumes:
    - ${PWD}/data:/var/lib/mysql

它解决了,但总是向我显示消息:

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

然后我只是用这种方式,而没有使用“”。一开始:

mariadb:
  image: mariadb
  volumes:
    - /data:/var/lib/mysql