Docker 在$PATH中找不到可执行文件
我在PHP-FPM7.1的Dockerfile中工作。我用以下行结束Dockerfile:Docker 在$PATH中找不到可执行文件,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我在PHP-FPM7.1的Dockerfile中工作。我用以下行结束Dockerfile: CMD ["php71-php-fpm"] 因为我使用的是docker compose这就是我启动容器的方式: docker-compose up -d 容器按照以下行编译(显然): Successfully built 014e24455b53 WARNING: Image for service php was built because it did not already exist. To
CMD ["php71-php-fpm"]
因为我使用的是docker compose
这就是我启动容器的方式:
docker-compose up -d
容器按照以下行编译(显然):
Successfully built 014e24455b53
WARNING: Image for service php was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating php71-fpm
但它以以下错误结束:
ERROR: for php Cannot start service php: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"php71-php-fpm\\\": executable file not found in $PATH\"\n"
ERROR: Encountered errors while bringing up the project.
我尝试了以下方法:
CMD php71-php-fpm
错误消失,但容器退出,代码127:
> docker-compose ps
Name Command State Ports
-------------------------------------------------------
php71-fpm /bin/sh -c php71-php-fpm Exit 127
我错过了什么
更新
我找到了以下答案:
未找到给定命令时,/bin/sh返回值127
在PATH系统变量中,并且它不是内置shell
指挥部。换句话说,系统不理解你的命令,
因为它不知道在哪里找到你想要的二进制文件
打电话
这使我认为文件没有被执行,因此路径设置不正确
再一次,我错过了什么
此php71 fpm
将与另一个运行Nginx的容器链接(这是一个WIP,也是我学习Docker的方法)
这是完整的,让你看看 我认为您遇到了麻烦,因为Docker运行的默认shell不是根据的登录shell,这意味着
/etc/profile.d/
中的脚本不会得到处理
如果您需要配置文件处理,请尝试将最后一行更改为
CMD[“/bin/sh”、“-l”、“-c”、“php71 php fpm”]
以调用登录shell。我得到了与以前相同的结果您确定映像上存在可执行文件吗?在图像上执行find/-name php71-php-fpm1
只能在/etc/logrotate.d
**注意**我最初忘记了回答中的-c
。很抱歉。但是使用CMD[“env”]
运行映像与CMD[“/bin/sh”、“-l”、“-c”、“env”]
将在路径中显示相关的php目录
这是应该添加路径的文件,可能在容器启动时没有执行,您能看一下并让我知道这就是问题所在,这种情况下的解决方案是什么吗?我确实相信,如果使用/bin/sh-l-c…
运行,则容器正在寻找php71 path.sh
文件,运行时使用env
在容器中打印环境变量就证明了这一点(PATH
包含对php
目录的引用)。但是,我担心的是,名为php71 php fpm
的可执行文件实际上不存在于您的映像上。如上所述,在容器的文件系统中,当它运行时,我无法在任何地方找到它。这是启动php所需的实际命令吗?抱歉,我目前无法测试您的映像。