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
有两个问题。
正如 Dmitry 所说,您使用的不是 PHP 图像,而是原始的 Alpine 图像。
您尝试将 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/*
使用 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
有两个问题。
正如 Dmitry 所说,您使用的不是 PHP 图像,而是原始的 Alpine 图像。
您尝试将 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/*