未设置码头工人撰写环境



我在docker-compose方面遇到了问题:环境部分似乎不再在一台服务器上工作,而同样的事情在其他服务器上工作。

在指定的服务器上,使用此 docker 撰写:

version: '3'
services:
test:
image: 'busybox'
command: env
environment:
- HELLO=WORLD

运行 docker 撰写输出以下内容:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=8d4af1fcbe88
HOME=/root

没有环境变量HELLO的痕迹

我试过跑步

docker run -e test=plop busybox env

它工作和输出

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=5880600fbb99
test=plop
HOME=/root

我尝试在 github 上使用最新的 docker-compose 版本,但它没有任何变化。

使用.env文件时会出现相同的问题。

有没有人知道这里会发生什么?

编辑:需要明确的是,我已经在其他服务器上运行了这个docker-compose,它按预期工作,我想知道是否有人可以帮助我调试这个"错误"。这是一个演练,解释了我做了什么:

/tmp/test$ curl -SsL "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
/tmp/test$ ls -a
.  ..  docker-compose  docker-compose.yml
/tmp/test$ cat docker-compose.yml
version: '3'
services:
test:
image: 'busybox'
command: env
environment:
- HELLO=WORLD
/tmp/test$ sudo ./docker-compose down
Removing network test_default
WARNING: Network test_default not found.
/tmp/test$ sudo ./docker-compose up -d
Creating network "test_default" with the default driver
Creating test_test_1 ... done
/tmp/test$ sudo docker logs test_test_1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b68e605e609d
HOME=/root

我尝试了确切的docker-compose.yml,并且得到了预期的输出。请检查以下日志。

$ cat docker-compose.yml 
version: '3'
services:
test:
image: 'busybox'
command: env
environment:
- HELLO=WORLD
$ docker-compose up
Creating network "cwa-base-webpack_default" with the default driver
Creating test_1 ... done
Attaching to test_1
test_1  | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
test_1  | HOSTNAME=00bd78e58400
test_1  | HELLO=WORLD
test_1  | HOME=/root
test_1 exited with code 0

您可以检查的几点:-

  • 在运行docker-compose up之前先运行docker-compose down,只是为了排除任何以前的部署。
  • 确保您使用的是正确的docker-compose.yml文件,即您在正确的目录中并使用默认文件。

最后,通过更新 docker 解决了这个问题。 18.09.8 做到了。 有点奇怪,因为 docker 使用环境变量。 我想这是两者之间的互动。 无论如何,感谢您的帮助!

最新更新