Php: 有关使用docker-php-ext-configure,docker-php-ext-install安装和删除依赖的问题

Created on 8 May 2019  ·  4Comments  ·  Source: docker-library/php

我看到例子
https://docs.docker.com/samples/library/php/

FROM php:5.6-cli
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
    && mkdir -p /tmp/xcache \
    && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \
    && rm xcache.tar.gz \
    && docker-php-ext-configure /tmp/xcache --enable-xcache \
    && docker-php-ext-install /tmp/xcache \
    && rm -r /tmp/xcache

于是我使用下面的代码

FROM php:7.1.28-fpm-alpine

MAINTAINER xxx

ENV WORK_PATH /var/html/work
RUN mkdir -p $WORK_PATH

WORKDIR $WORK_PATH

ADD ./repo $WORK_PATH

#RUN apk add autoconf && docker-php-ext-install -j$(nproc) pdo_mysql
RUN tar -xf redis-4.3.0.tgz \
&& rm -rf redis-4.3.0.tgz \
&& docker-php-ext-configure $WORK_PATH/redis-4.3.0 --prefix=/usr/local/redis \
&& docker-php-ext-install $WORK_PATH/redis-4.3.0 \
&& rm -rf redis-4.3.0 \
&& tar -xf msgpack-2.0.3.tgz \
&& rm -rf msgpack-2.0.3.tgz \
&& docker-php-ext-configure $WORK_PATH/msgpack-2.0.3 --prefix=/usr/local/msgpack \
&& docker-php-ext-install $WORK_PATH/msgpack-2.0.3 \
&& rm -rf msgpack-2.0.3 \
&& tar -xf yaf-3.0.8.tgz \
&& rm -rf yaf-3.0.8.tgz \
&& docker-php-ext-configure $WORK_PATH/yaf-3.0.8 --prefix=/usr/local/yaf \
&& docker-php-ext-install $WORK_PATH/yaf-3.0.8 \
&& rm -rf yaf-3.0.8 \
&& tar -xf SeasLog-2.0.2.tgz \
&& rm -rf SeasLog-2.0.2.tgz \
&& docker-php-ext-configure $WORK_PATH/SeasLog-2.0.2 --prefix=/usr/local/SeasLog \
&& docker-php-ext-install $WORK_PATH/SeasLog-2.0.2 \
&& rm -rf SeasLog-2.0.2

CMD ["php-fpm"]

它总是安装一个扩展时安装依赖

fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/25) Installing m4 (1.4.18-r1)
(2/25) Installing libbz2 (1.0.6-r6)
(3/25) Installing perl (5.26.3-r0)
...

安装成功后删除依赖

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20160303/
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la       modules/* libs/*
(1/21) Purging .phpize-deps-configure (0)
(2/21) Purging dpkg-dev (1.19.2-r0)
(3/21) Purging dpkg (1.19.2-r0)
...

我的docker执行了4次安装依赖,4次删除依赖,非常的耗时间。
我很笨,找不到相关文档,所以我来这里提问,这是正常的还是是我哪里使用有问题?

question

All 4 comments

@wglambert 好的,谢谢大神。我理解为使用docker-php-ext-install必定会频繁的安装和删除依赖,如果不想频繁的安装和删除依赖,那么就不能使用docker-php-ext-install,而是要自己手动在Dockerfile中安装依赖,然后执行phpize && ./configure && make && make install自己安装所有扩展,是这样吗?

@wglambert 好的,谢谢大神。我理解为使用docker-php-ext-install必定会频繁的安装和删除依赖,如果不想频繁的安装和删除依赖,那么就不能使用docker-php-ext-install,而是要自己手动在Dockerfile中安装依赖,然后执行phpize && ./configure && make && make install自己安装所有扩展,是这样吗?

Yes. That's a helper script only.
是的,那只是一个辅助安装的脚本而已。

Also please use English (or at least attach Google translated English with the original).
另外请不要在一个 99% 的 issues 都是英文的开源项目中坚持使用中文,至少你可以中文跟英文的机翻都贴上来。

@phy25 Ok,thanks. It's my first time to use issues. I will do my best to learn Engilsh.

Was this page helpful?
0 / 5 - 0 ratings