我在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,供您查看。
答案 0 :(得分:3)
我相信你遇到了麻烦,因为根据this answer,Docker运行的默认shell不是登录shell,这意味着/etc/profile.d/
中的脚本无法处理。
如果您需要配置文件处理,请尝试将最后一行更改为CMD ["/bin/sh", "-l", "-c", "php71-php-fpm"]
以调用登录shell。