在$ 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。