Docker PHP Ошибка команды ext enable - PullRequest
0 голосов
/ 13 июля 2020

Что требуется, чтобы 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 как зависимость и таким образом требовать расширения?

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Вы используете ванильное альпийское изображение. Команды docker-php-ext-* существуют только в образе php -alpine

Например, замените FROM на что-то вроде:

FROM php:7.4-fpm-alpine
1 голос
/ 13 июля 2020

Есть две проблемы.

  1. Как сказал Дмитрий, вы используете не изображение 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/*
...