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

时间:2018-04-23 14:11:24

标签: alpine

我正在尝试使用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

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

问题Dockerfile中有两个问题:

1。缺少两个php个软件包:php7-devphp7-embed

来自--config命令的

2。 ./configure php标志指定特定版本PHP的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