我需要从我的 Linux 主机系统调用位于 docker 容器中的 PHP 解释器。由于某些原因,我不想在主机系统上安装 PHP。现在我尝试以这种方式调用 PHP:
cat script.php | docker exec -i php_container_name php -- --param1=value1
我还需要将一些二进制数据传递到该 PHP 脚本的标准输入。但这个通道很忙(因为PHP源代码是通过标准输入传递的)。我尝试过做以下事情:
- 使用这样的命名管道:
cat script.php | docker exec -i php_container_name php -- --param1=value1 pipe-name="/path/to/the/file"
并在 PHP 端读取该管道的内容。但通过这样做,我必须在容器和系统之间共享管道文件,这是我宁愿避免的额外操作。
- 使用无名管道#3,如下所示:
exec 3> >(docker exec -i php_container_name php -- --param1=value1)
cat ./script.php >&3
因此,在最后一行中,我需要将数据传递到未命名管道的文件描述符#3。像这样的东西:
cat ./script.php >&3 3<`echo -e "line1\nline2"`
但这是行不通的。可以做吗?