要使用
docker-php-ext-...
命令需要什么?我正在创建阿尔卑斯山图像
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
作为依赖项并需要这样的扩展吗?
有两个问题。
正如 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/*
作为辅助解决方案,您可以在本地拥有启用 PHP 扩展的 php.ini。将本地 php.ini 挂载到容器中。例如:
fpm:
build: docker/php
volumes:
- './:/var/www/html'
- './docker/php/php.ini:/opt/bitnami/php/lib/php.ini'