build by m2max exts edis,xlswriter,yac,mongodb,protobuf swoole gd pgsql zip bcmath sockets iconv
1.8K
使用PHP官方镜像php:8.2作为基础,添加了常用扩展 使用macbook m2 build打包
# 基础镜像
FROM php:8.2 as builder
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && rm -Rf /var/lib/apt/lists/* && cat /etc/apt/sources.list.d/debian.sources
# 复制扩展包
COPY ./ext/*.tgz /tmp/
RUN apt-get update \
&& export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" \
&& apt-get install -y libssl-dev libicu-dev zlib1g-dev libpq-dev libmcrypt-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev librdkafka-dev libzip-dev git unzip procps \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd pgsql pdo_pgsql mysqli pdo_mysql zip bcmath sockets pcntl iconv \
&& apt autoremove && apt clean -y
# 安装redis扩展
RUN pecl install /tmp/redis-6.2.0.tgz && docker-php-ext-enable redis
# 安装excel处理扩展
RUN pecl install /tmp/xlswriter-1.5.8.tgz && docker-php-ext-enable xlswriter
# 安装缓存 opcache
RUN docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache
# 安装xdebug 默认不启动
RUN pecl install /tmp/xdebug-3.4.5.tgz
# 安装yac
RUN pecl install /tmp/yac-2.3.1.tgz && docker-php-ext-enable yac
# 安装kafka插件
RUN pecl install /tmp/rdkafka-6.0.5.tgz && docker-php-ext-enable rdkafka
# 安装mongodb
RUN pecl install /tmp/mongodb-1.15.3.tgz && docker-php-ext-enable mongodb
# 安装protobuf
RUN pecl install /tmp/protobuf-4.29.5.tgz && docker-php-ext-enable protobuf
# 安装swoole
RUN pecl install /tmp/swoole-5.1.8.tgz && docker-php-ext-enable swoole
RUN rm -f /tmp/*.tgz
FROM php:8.2
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && rm -Rf /var/lib/apt/lists/* && cat /etc/apt/sources.list.d/debian.sources
RUN apt-get update \
&& apt-get install -y libssl-dev libicu-dev zlib1g-dev libpq-dev libmcrypt-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev librdkafka-dev libzip-dev git unzip procps \
&& apt autoremove && apt clean -y
# 从构建阶段复制编译成果
COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
# 安装composer
RUN curl -o composer https://mirrors.aliyun.com/composer/composer.phar \
&& mv composer /usr/bin/composer \
&& chmod a+x /usr/bin/composer \
&& composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
RUN cp "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN { \
echo "[swoole]"; \
echo "swoole.use_shortname = Off"; \
echo "swoole.enable_coroutine = On"; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini
EXPOSE 9501
EXPOSE 9002
WORKDIR /app
Content type
Image
Digest
sha256:e7f39c3dc…
Size
233.5 MB
Last updated
about 1 year ago
docker pull yekern/php82-swoole