$ PATH中找不到可执行文件

时间:2016-12-13 03:26:43

标签: docker docker-compose dockerfile

我在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

我在这里缺少什么?

更新

我找到了以下答案here

  

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

这让我觉得文件php71-paths.sh没有被执行,因此路径设置不正确。

再一次,我错过了什么?

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

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

1 个答案:

答案 0 :(得分:3)

我相信你遇到了麻烦,因为根据this answer,Docker运行的默认shell不是登录shell,这意味着/etc/profile.d/中的脚本无法处理。

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