내 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"`
그러나 이것은 작동하지 않습니다. 할 수 있나요?