Dockerfile
FROM php:8.2-alpine
# root 用户
USER root
# 工作目录
WORKDIR /data
# 容器启动命令 常驻后台 可自定义
# cd /data && composer install --optimize-autoloader --no-dev && php start.php start -d && tail -n 1 -f /etc/passwd
COPY ./scripts/start.sh /start.sh
# 下载慢 提前下载好
# curl -sS https://getcomposer.org/installer | php
COPY ./scripts/composer-setup.php /composer-setup.php
# 修改 start.sh 可执行
RUN chmod a+x /start.sh \
# 修改镜像地址
&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
# 更新缓存
&& apk update \
# 安装需要的基础包
&& apk add autoconf linux-headers libevent-dev openssl-dev zlib-dev libpng-dev \
# 解压 php 源代码
&& docker-php-source extract \
# 安装并且开启 php 扩展
&& docker-php-ext-install -j$(nproc) pcntl sockets pdo_mysql gd \
# 开启 opcache
&& docker-php-ext-enable opcache \
# php 扩展源代码
&& cd /usr/src/php/ext \
# 下载 event 扩展
&& wget https://pecl.php.net/get/event-3.0.8.tgz \
# 解压
&& tar xvf event-3.0.8.tgz \
# 重命名
&& mv event-3.0.8 event \
# 安装并且开启 event
&& docker-php-ext-install -j$(nproc) event \
# 切换到 配置文件目录
&& cd /usr/local/etc/php/conf.d/ \
# 修改 event 扩展加载顺序 到 sockets 后面 不然会报错
&& mv docker-php-ext-event.ini docker-php-ext-z1-event.ini \
# 删除 php 源代码
&& docker-php-source delete \
# 切换到工作目录
&& cd /data \
# 安装 composer
&& php /composer-setup.php \
# 移动 composer
&& mv composer.phar /usr/local/bin/composer \
# 设置 composer 镜像
&& composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 定义启动脚本
CMD [ "/start.sh" ]
docker-compose.yml
FROM php:8.2-alpine
# root 用户
USER root
# 工作目录
WORKDIR /data
# 容器启动命令 常驻后台 可自定义
# cd /data && composer install --optimize-autoloader --no-dev && php start.php start -d && tail -n 1 -f /etc/passwd
COPY ./scripts/start.sh /start.sh
# 下载慢 提前下载好
# curl -sS https://getcomposer.org/installer | php
COPY ./scripts/composer-setup.php /composer-setup.php
# 修改 start.sh 可执行
RUN chmod a+x /start.sh \
# 修改镜像地址
&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
# 更新缓存
&& apk update \
# 安装需要的基础包
&& apk add autoconf linux-headers libevent-dev openssl-dev zlib-dev libpng-dev \
# 解压 php 源代码
&& docker-php-source extract \
# 安装并且开启 php 自带扩展
&& docker-php-ext-install -j$(nproc) pcntl sockets pdo_mysql gd exif \
# 开启 opcache
&& docker-php-ext-enable opcache \
# 切换进 php 扩展源代码 准备安装 pecl 扩展
&& cd /usr/src/php/ext \
# 下载安装 event 扩展
&& wget https://pecl.php.net/get/event-3.0.8.tgz && tar xvf event-3.0.8.tgz && mv event-3.0.8 event && docker-php-ext-install -j$(nproc) event \
# 配置 event 扩加载顺序 到 sockets 后面 不然会报错
&& mv /usr/local/etc/php/conf.d/docker-php-ext-event.ini /usr/local/etc/php/conf.d/docker-php-ext-z1-event.ini \
# 下载安装 redis 扩展
&& wget https://pecl.php.net/get/redis-6.0.2.tgz && tar xvf redis-6.0.2.tgz && mv redis-6.0.2 redis && docker-php-ext-install -j$(nproc) redis \
# 切换到工作目录
&& cd /data \
# 安装 composer
&& php /composer-setup.php && mv composer.phar /usr/local/bin/composer && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ \
# 删除 php 源代码
&& docker-php-source delete
# 定义启动脚本
CMD [ "/start.sh" ]
新增安装 pecl 的 event 扩展 redis 扩展
学习一下