我正在尝试使用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
感谢任何帮助
答案 0 :(得分:0)
问题Dockerfile
中有两个问题:
1。缺少两个php
个软件包:php7-dev
和php7-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