xiaoai/php_server/Dockerfile

86 lines
2.6 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# # 使用官方 PHP 镜像,带扩展
# FROM php:8.0.30-fpm
# # 安装系统依赖和 PHP 扩展所需的库
# RUN apt-get update && apt-get install -y \
# git unzip zip libpq-dev libzip-dev \
# libpng-dev libjpeg-dev libfreetype6-dev libstdc++6\
# && docker-php-ext-configure gd --with-freetype --with-jpeg \
# && docker-php-ext-install pdo_mysql zip gd
# # 安装 swoole 扩展(生产环境建议加 --enable-openssl 等参数)
# RUN pecl channel-update pecl.php.net \
# && pecl install swoole-4.8.13 \
# && docker-php-ext-enable swoole
# # 安装 Composer
# COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# # 设置工作目录
# WORKDIR /var/www
# # 复制项目代码到容器中
# COPY . .
# # ✅ 安装 swoole_loader.so
# RUN ext_dir=$(php -i | grep '^extension_dir' | awk '{print $3}') \
# && cp swoole_loader.so "$ext_dir/" \
# && echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini
# # 安装 PHP 依赖
# RUN composer install --no-interaction --prefer-dist --optimize-autoloader
# # 复制 .env 示例(如你已有 .env 可改这步)
# RUN cp .example.env .env || true
# # 设置目录权限(视情况而定)
# RUN chown -R www-data:www-data /var/www
# # 启动 PHP 内建服务器(仅用于验证)
# CMD ["php", "think", "run", "--host", "0.0.0.0", "--port", "8000"]
FROM php:8.0.30-fpm
# 1) 系统依赖 + PHP 扩展
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git unzip zip libpq-dev libzip-dev \
libpng-dev libjpeg-dev libfreetype6-dev \
libstdc++6 \
libssl-dev libcurl4-openssl-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo_mysql zip gd \
&& rm -rf /var/lib/apt/lists/*
# 2) Swoole 4.8.x兼容 PHP 8.0
RUN pecl channel-update pecl.php.net \
&& printf "\n" | pecl install swoole-4.8.13 \
&& docker-php-ext-enable swoole
# 3) Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
# 4) 复制代码
COPY . .
# 5) 安装 swoole_loader.so
RUN ext_dir="$(php -r 'echo ini_get("extension_dir");')" \
&& cp swoole_loader.so "$ext_dir/" \
&& echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini \
# 立即验证能否加载,构建期即可失败
&& php -dextension=swoole_loader.so -m | grep -q swoole_loader
# 6) Composer 依赖
RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader \
&& composer clear-cache
# 7) 权限(如需)
RUN chown -R www-data:www-data /var/www
CMD ["php", "think", "run", "--host", "0.0.0.0", "--port", "8000"]