![](/img/trans.png)
[英]Run a shell script from docker-compose command, inside the container
[英]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.