首先:alpine 是没有预编译好的 php-memcachep /redis 等等的,这个时候就需要自己编译;
下面我就教你如何用 alpine 的 php5 编译扩展:
*
```
# 编译 php 扩展镜像
# author ahmerry@qq.com
# 这个镜像基于你前面的那个 php5 镜像,注意修改掉
FROM ucse/php5
# tools php5-pear 就是 pecl,这个懂吧?装扩展的
RUN apk --no-cache add alpine-sdk php5-pear
# common dependency
RUN apk --no-cache add libressl-dev zlib-dev php5-dev autoconf
# bug fix
RUN \
# 高版本 alpine 建立软链很重要,有些程序默认跑去找 php(php7)
if [ ! -e /usr/bin/php ]; then \
ln -s /usr/bin/php5 /usr/bin/php; \
fi; \
# 感觉这像是个 php 官方 bug (
https://serverfault.com/questions/589877/pecl-command-produces-long-list-of-errors )
sed -i "s|\-n||g" /usr/bin/pecl && \
pecl update-channels && \
rm -rf /tmp/pear ~/.pearrc
# 编译 amqp swoole 需要
RUN apk --no-cache add rabbitmq-c-dev nghttp2-dev hiredis-dev
ENTRYPOINT ["sh"]
```
* 好了基于以上构建好镜像,run 起来!
* `docker exec` 进入镜像后 执行:`pecl install -o -f redis `
* 编译完后`docker cp php-builder:/usr/lib/php5/modules/
reids.so ../modules/;`
* 好了,现在你拥有 redis 扩展了
#### 补充
其实以上已经构建起来一个有编译功能的镜像了,不一定非要走 pecl 模式装!更多方式,欢迎扩展。
喜欢 alpine 的欢迎加 qq 群 558299436 讨论