我正在尝试从 Docker 容器内的代码运行二进制文件,但出现“未找到”127 错误。
我尝试运行的二进制文件位于 ~/blah/src/vendor/bin/wkhtmltopdf-amd64
它是与 PHP Composer 一起安装的。
当我在 Linux(实际上是 Windows 的 WSL)中转到该目录时,我可以看到该文件并运行它就好了。
但是当我尝试进入容器时(使用 docker exec -it php /bin/sh
),我看到了:
/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # whoami
root
/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # ls -la
total 38880
drwxr-xr-x 2 laravel laravel 4096 Feb 9 18:54 .
drwxr-xr-x 3 laravel laravel 4096 Jan 15 2018 ..
-rwxr-xr-x 1 laravel laravel 39804584 Jan 15 2018 wkhtmltopdf-amd64
/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # ./wkhtmltopdf-amd64
/bin/sh: ./wkhtmltopdf-amd64: not found
如果它就在那里怎么会找不到?!
我希望在容器中运行的代码(PHP 代码)能够运行该二进制文件,但它不能。
注意:我不想将此命令作为 Docker 命令运行。 Docker 容器是 PHP,该容器内的 PHP 正在尝试运行此命令。
答案 0 :(得分:0)
我通过使用不同的 docker 镜像解决了这个问题。我使用了 php:7.4-fpm-alpine
php:7.4-fpm
这也允许我执行 bash
而不是 /bin/sh
在我的 php.dockerfile 中,我不得不添加一行来运行 apt-get install 一些东西。就我而言,它是这些:libxrender1、fontconfig、libxext6
答案 1 :(得分:-1)
也许按照上面的帖子使用卷,因为这似乎是操作系统/Docker 相关的问题。
version: '3.4'
volumes:
test_vol:
driver: local
driver_opts:
type: none
device: /host_mnt/c/path/to/folder
o: bind