繁体   English   中英

docker-compose exec命令可用于容器中,但不能从我的主机中使用

[英]docker-compose exec command works into container but not from my host machine

我需要在chromedriver容器中运行命令,以从php-fpm容器传递ip。 php-fpm容器的主机名是“ php-fpm”。 两个容器都在同一网络中。 这样,这些人可以看到对方。

如果我访问chromedriver容器并运行此命令,它将正常工作:

chromedriver --url-base=/wd/hub --whitelisted-ips=$(getent hosts php-fpm | cut -d' ' -f1)

我在这里期望的是$(getent hosts php-fpm | cut -d' ' -f1)从php-fpm容器中获取IP并分配给白名单的IPS参数。 再次,它正常工作。

但是如果从我的主机运行,则:

docker-compose exec chromedriver chromedriver --url-base=/wd/hub --whitelisted-ips=$(getent hosts php-fpm | cut -d' ' -f1)

getent命令不返回php-fpm的IP。 是否有考虑将转义字符,额外参数或类似内容用于此exec命令?

我可以在没有ip的情况下运行chromedriver。 仅用于开发环境。 但是我想知道为什么这个命令不起作用。

谢谢前进。

之所以失败,是因为$(..)在您的主机上运行,​​并将其结果传递到Docker映像中。

为了使它在docker映像内发生,您可以将未扩展的命令传递给映像中的shell,并使该shell扩展并运行以下命令:

docker-compose exec chromedriver bash -c \
    "chromedriver --url-base=/wd/hub --whitelisted-ips=\$(getent hosts php-fpm | cut -d' ' -f1)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM