php:
php:
php:
php:
官方镜像缺少常见扩展 以php:8.0.8-fpm-alpine3.13为例
mkdir php/conf.d -p
FROM php:8.0.8-fpm-alpine3.13 LABEL maintainer="leo leo2768@163.com" # 设置apk源为国内镜像源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories COPY ./conf.d/ $PHP_INI_DIR/conf.d/ ENV TZ "Asia/Shanghai" ENV TERM xterm # 默认关闭opcode ENV OPCODE 0 # 添加用户 RUN addgroup -g 1000 -S www && adduser -s /sbin/nologin -S -D -u 1000 -G www www # 指定扩展版本 ENV PHPREDIS_VERSION 5.3.4 ENV PHPXDEBUG_VERSION 2.6.0 ENV PHPZIP_VERSION 1.19.3 ENV PHPSWOOLE_VERSION 4.6.7 ENV PHPYAF_VERSION 3.3.2 ENV PHPAMQP_VERSION 1.11.0beta ENV PHPMONGODB_VERSION 1.9.1 # PHPIZE_DEPS 包含 gcc g++ 等编译辅助类库,完成编译后删除 RUN apk add --no-cache $PHPIZE_DEPS \ && apk add --no-cache libstdc++ libzip-dev vim\ && apk add rabbitmq-c-dev \ && apk update \ && pecl install redis-$PHPREDIS_VERSION \ && pecl install zip-$PHPZIP_VERSION \ && pecl install yaf-$PHPYAF_VERSION \ && pecl install swoole-$PHPSWOOLE_VERSION \ && pecl install mongodb-$PHPMONGODB_VERSION \ && pecl install amqp-$PHPAMQP_VERSION \ && docker-php-ext-enable redis zip yaf swoole mongodb amqp \ && apk del $PHPIZE_DEPS # 安装扩展 RUN apk add --no-cache \ freetype \ libpng \ libjpeg-turbo \ freetype-dev \ libpng-dev \ jpeg-dev \ libjpeg \ libjpeg-turbo-dev \ libwebp \ libwebp-dev \ && NUMPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \ && docker-php-ext-install -j${NUMPROC} gd \ && docker-php-ext-install -j${NUMPROC} pdo_mysql \ && docker-php-ext-install -j${NUMPROC} opcache \ && docker-php-ext-install -j${NUMPROC} bcmath \ && docker-php-ext-install -j${NUMPROC} mysqli # 拷贝配置文件 COPY www.conf /usr/local/etc/php-fpm.d/www.conf RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
新建www.conf 输入
[www] user = www group = www listen = 0.0.0.0:9000 pm = dynamic pm.max_children = 6 pm.start_servers = 4 pm.min_spare_servers = 1 pm.max_spare_servers = 5
在conf.d下新建date.ini 输入
date.timezone = Asia/Shanghai
在conf.d下新建opcode.ini 输入
opcache.enable= 0 enable_clopcache.enable_cli=1 opcache.revalidate_freq=60 opcache.max_accelerated_files=100000 opcache.validate_timestamps=1
新建build.sh 输入
#/bin/bash docker build -t php8-swoole-yaf-redis-amqp:latest .
目录结构如下:
. |-- build.sh |-- conf.d | |-- date.ini | `-- opcode.ini |-- Dockerfile `-- www.conf
执行sh build.sh
结果:
... more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ Installing header files: /usr/local/include/php/ 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/* rm -f ext/opcache/jit/zend_jit_x86.c (1/22) Purging .phpize-deps (20210712.084651) (2/22) Purging autoconf (2.69-r3) (3/22) Purging m4 (1.4.18-r2) (4/22) Purging dpkg-dev (1.20.6-r0) (5/22) Purging perl (5.32.0-r0) (6/22) Purging dpkg (1.20.6-r0) (7/22) Purging file (5.39-r0) (8/22) Purging g++ (10.2.1_pre1-r3) (9/22) Purging gcc (10.2.1_pre1-r3) (10/22) Purging binutils (2.35.2-r1) (11/22) Purging libatomic (10.2.1_pre1-r3) (12/22) Purging libgomp (10.2.1_pre1-r3) (13/22) Purging libgphobos (10.2.1_pre1-r3) (14/22) Purging libc-dev (0.7.2-r3) (15/22) Purging musl-dev (1.2.2-r1) (16/22) Purging make (4.3-r0) (17/22) Purging re2c (1.3-r1) (18/22) Purging libmagic (5.39-r0) (19/22) Purging mpc1 (1.2.0-r0) (20/22) Purging mpfr4 (4.1.0-r0) (21/22) Purging isl22 (0.22-r0) (22/22) Purging gmp (6.2.1-r0) Executing busybox-1.32.1-r6.trigger OK: 41 MiB in 59 packages Removing intermediate container 8f12e0d4fbaf ---> 49e4817125f0 Step 18/19 : COPY www.conf /usr/local/etc/php-fpm.d/www.conf ---> 89f47472322f Step 19/19 : RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" ---> Running in f8a1dd909182 Removing intermediate container f8a1dd909182 ---> d108fa70a68f Successfully built d108fa70a68f Successfully tagged php8-swoole-yaf-redis-amqp:latest
进入容器查看