Docker PHP ext 启用命令失败

Docker PHP ext enable command failing

使用 docker-php-ext-... 命令需要什么?我正在创建一个 Alpine 图像

FROM alpine:3.12

RUN apk update && \
    # Add support for PHP7.4.
    apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
    php php7-fpm nginx composer git 
    ....

# PHPIZE dependencies + xdebug
RUN apk add --no-cache autoconf file g++ gcc libc-dev make pkgconf re2c \
    php7-pecl-xdebug \
    && docker-php-ext-install xdebug

...

但我得到 /bin/sh: docker-php-ext-install: not found

如何运行命令? 此外,apk add php7-pecl-xdebug 是否可以将安装 pecl 作为依赖项并以这种方式要求扩展?

您使用的是原版 alpine 图像。 docker-php-ext-* 命令只存在于 php-alpine image

例如,将您的 FROM 替换为:

FROM php:7.4-fpm-alpine

有两个问题。

  1. 正如 Dmitry 所说,您使用的不是 PHP 图像,而是原始的 Alpine 图像。

  2. 您尝试将 nginx 和 PHP 打包到一个容器中。

当你想编排nginx和PHP时,你应该使用docker-compose

这是一个例子PHP+nginx docker-compose.yml:

version: '3.1'

services:
    nginx:
        restart: always
        image: nginx:latest
        volumes:
            - ./html/:/var/www/html/:cached
        ports:
            - "80:80"
        links:
            - php

    php:
        restart: always
        build:
            dockerfile: Dockerfile
        expose:
            - 9000
        volumes:
            - ./:/var/www/:cached

这是 PHP Dockerfile 使用的:

FROM php:7.4-fpm-alpine

ENV COMPOSER_ALLOW_SUPERUSER 1

RUN docker-php-ext-install mysqli

RUN set -xe \
    && apk add --update \
        icu \
    && apk add --no-cache --virtual .php-deps \
        make \
    && apk add --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        zlib-dev \
        icu-dev \
        g++ \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl \
    && docker-php-ext-enable intl \
    && { find /usr/local/lib -type f -print0 | xargs -0r strip --strip-all -p 2>/dev/null || true; } \
    && apk del .build-deps \
    && rm -rf /tmp/* /usr/local/lib/php/doc/* /var/cache/apk/*