构建基于 php nginx-unit 图像的高山

building alpine based php nginx-unit image

我正在尝试使用 Alpine Linux 构建 nginx 单元 PHP docker 映像,但是当我配置 Nginx 单元时,它无法检测到 PHP安装在主机上。

这是我的 Dockerfile:

FROM alpine:3.7

ENV UNIT_VERSION 1.0

RUN apk add --no-cache --update \
        php7 \
        php7-redis \
        php7-apcu \
        php7-bcmath \
        php7-dom \
        php7-ctype \
        php7-curl \
        php7-fpm \
        php7-fileinfo \
        php7-gd \
        php7-iconv \
        php7-intl \
        php7-json \
        php7-mbstring \
        php7-mcrypt \
        php7-mysqlnd \
        php7-opcache \
        php7-openssl \
        php7-pdo \
        php7-pdo_mysql \
        php7-pdo_pgsql \
        php7-pdo_sqlite \
        php7-phar \
        php7-posix \
        php7-session \
        php7-simplexml \
        php7-soap \
        php7-xml \
        php7-zip \
        php7-zlib \
        php7-tokenizer \
        curl gcc musl-dev make bash
# Install Nginx unit
RUN cd /tmp && \
    wget -qO- "http://unit.nginx.org/download/unit-$UNIT_VERSION.tar.gz" | tar xvz  && \
    cd unit-$UNIT_VERSION && \
    ./configure --prefix=/usr  --modules=lib --control="unix:/var/run/control.unit.sock" --log=/dev/stdout --pid=/var/run/unit.pid && \
    ./configure php --module=php7 \
                --config=/etc/php7/php.ini  \
                --lib-path=/usr/lib/php7 && \
    # ./configure php --module=php7 && \
    make install &&\
    rm -rf /tmp/unit-$UNIT_VERSION

这是我看到的错误。

configuring PHP module
checking for PHP ...
./configure: error: no PHP found.

The command '/bin/sh -c cd /tmp &&     wget -qO- 
"http://unit.nginx.org/download/unit-$UNIT_VERSION.tar.gz" | tar xvz  &&     cd unit-$UNIT_VERSION &&     ./configure --prefix=/usr  --modules=lib --control="unix:/var/run/control.unit.sock" --log=/dev/stdout --pid=/var/run/unit.pid &&     ./configure php --module=php7                     --config=/etc/php7/php.ini                      --lib-path=/usr/lib/php7 &&     make install &&    rm -rf /tmp/unit-$UNIT_VERSION' returned a non-zero 
code: 1

感谢任何帮助

问题 Dockerfile 中有两个问题:

1. 缺少两个 php 包:php7-devphp7-embed

2. --config 来自 ./configure php 命令的标志为 [=33= 的特定版本指定了 php-config 脚本].是 /usr/bin/php-config,不是 /etc/php7/php.ini

最后的Dockerfile是:

FROM alpine:3.7

ENV UNIT_VERSION 1.0

RUN apk add --no-cache --update \
        php7 \
        php7-dev \
        php7-embed \
        php7-redis \
        php7-apcu \
        php7-bcmath \
        php7-dom \
        php7-ctype \
        php7-curl \
        php7-fpm \
        php7-fileinfo \
        php7-gd \
        php7-iconv \
        php7-intl \
        php7-json \
        php7-mbstring \
        php7-mcrypt \
        php7-mysqlnd \
        php7-opcache \
        php7-openssl \
        php7-pdo \
        php7-pdo_mysql \
        php7-pdo_pgsql \
        php7-pdo_sqlite \
        php7-phar \
        php7-posix \
        php7-session \
        php7-simplexml \
        php7-soap \
        php7-xml \
        php7-zip \
        php7-zlib \
        php7-tokenizer \
        curl gcc musl-dev make bash
# Install Nginx unit
RUN cd /tmp && \
    wget -qO- "http://unit.nginx.org/download/unit-$UNIT_VERSION.tar.gz" | tar xvz  && \
    cd unit-$UNIT_VERSION && \
    ./configure --prefix=/usr  --modules=lib --control="unix:/var/run/control.unit.sock" --log=/dev/stdout --pid=/var/run/unit.pid && \
    ./configure php --module=php7 \
                --config=/usr/bin/php-config \
                --lib-path=/usr/lib/php7 && \
    make install &&\
    rm -rf /tmp/unit-$UNIT_VERSION