在$ PATH中找不到可执行文件

我正在为PHP-FPM 7.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 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 

我在这里错过了什么?

UPDATE

我在这里find了以下答案:

如果在PATH系统variables中找不到给定的命令,并且它不是内置的shell命令,则返回值127 / bin / sh。 换句话说,系统不理解你的命令,因为它不知道在哪里find你想要调用的二进制文件。

这使我认为文件php71-paths.sh没有被执行,所以path设置不正确。

再次,我失踪了?

这个php71-fpm将与另一个运行Nginx的容器(这是一个WIP和我学习Docker的方法)

这里是完整的Dockerfile,供您查看。

我相信你会遇到麻烦,因为根据这个答案 Docker运行的默认shell不是一个loginshell,这意味着/etc/profile.d/脚本不会被处理。

如果您需要configuration文件处理,请尝试将最后一行更改为CMD ["/bin/sh", "-l", "-c", "php71-php-fpm"]以调用loginshell。