【问题标题】:PHP7 under Alpine in Docker command not foundDocker 命令中 Alpine 下的 PHP7 未找到
【发布时间】:2018-06-14 08:06:33
【问题描述】:

当我为容器运行交互式 shell 时,肯定有一个 PHP 二进制文件:

sudo docker run -t -i neekoy/php7 /bin/sh

/ # which php-fpm7

/usr/sbin/php-fpm7

但是当我运行同一个容器时,我得到以下信息:

sudo docker run neekoy/php7

/bin/sh: [php-fpm7]: not found

这是我的 Dockerfile:

FROM alpine:latest

RUN apk update

RUN apk add php7-fpm php7-mcrypt php7-soap php7-openssl php7-gmp php7-pdo_odbc php7-json php7-dom php7-pdo php7-zip php7-mysqli php7-sqlite3 php7-apcu php7-pdo_pgsql php7-bcmath php7-gd php7-odbc php7-pdo_mysql php7-pdo_sqlite php7-gettext php7-xmlreader php7-xmlrpc php7-bz2 php7-iconv php7-pdo_dblib php7-curl php7-ctype

EXPOSE 9000

CMD ['php-fpm7']

我已经删除了配置更改,因为它们无关紧要。

系统信息:

容器:

cat /etc/释放

3.7.0

NAME="Alpine Linux"

我的电脑:

码头工人-v

Docker 版本 17.12.1-ce,构建 7390fc6

【问题讨论】:

  • 您是否尝试过在 CMD 中使用来自 which 的整个路径?喜欢CMD ['/usr/sbin/php-fpm7']
  • 是的 - 我也尝试了完整路径,结果相同。
  • 啊,你必须使用像CMD ["php-fpm7"]这样的双引号——单引号显然不起作用。
  • 另外,您不想将 fpm 作为守护程序运行,因此您必须实际使用它:CMD ["php-fpm7", "-F"]-F = 无守护程序)。
  • 哈,你是对的——当我切换到双引号时,它甚至改变了突出显示。以这种方式工作。您能否将其作为答案提交,以便我标记它以防有人偶然发现此问题?

标签: php docker alpine


【解决方案1】:

问题是单引号 ' 不起作用 - 根据 documentation,参数被解析为 JSON 数组。所以正确的“CMD”行应该是这样的:

CMD ["php-fpm7", "-F"]

【讨论】:

    猜你喜欢
    • 2018-02-02
    • 2018-01-25
    • 2018-04-26
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2020-01-03
    相关资源
    最近更新 更多