|
|
@@ -26,9 +26,9 @@ COPY resources/ ./resources/
|
|
|
RUN bun run build
|
|
|
|
|
|
# ========================================
|
|
|
-# 第二阶段:PHP 运行时
|
|
|
+# 第二阶段:PHP 运行时(使用 php-fpm)
|
|
|
# ========================================
|
|
|
-FROM php:8.3-alpine AS runtime
|
|
|
+FROM php:8.3-fpm-alpine AS runtime
|
|
|
|
|
|
# 安装系统依赖 - 使用阿里云镜像
|
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
|
|
@@ -44,6 +44,8 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
icu-dev \
|
|
|
libzip-dev \
|
|
|
sqlite-dev \
|
|
|
+ # Nginx(高性能 Web 服务器)
|
|
|
+ nginx \
|
|
|
# Chrome/Chromium 依赖(PDF 生成必须)
|
|
|
chromium \
|
|
|
nss \
|
|
|
@@ -64,7 +66,7 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
npm \
|
|
|
&& rm -rf /var/cache/apk/* \
|
|
|
&& fc-cache -fv \
|
|
|
- && mkdir -p /run/dbus
|
|
|
+ && mkdir -p /run/dbus /run/nginx /var/log/nginx
|
|
|
|
|
|
# 设置 Chrome 环境变量
|
|
|
ENV CHROME_BIN=/usr/bin/chromium-browser \
|
|
|
@@ -116,15 +118,19 @@ RUN chown -R www-data:www-data /app && \
|
|
|
chmod -R 755 /app && \
|
|
|
chmod -R 777 /app/storage /app/bootstrap/cache
|
|
|
|
|
|
+# 复制 Nginx 和 PHP-FPM 配置
|
|
|
+COPY docker/nginx.conf /etc/nginx/nginx.conf
|
|
|
+COPY docker/www.conf /usr/local/etc/php-fpm.d/www.conf
|
|
|
+
|
|
|
EXPOSE 8000
|
|
|
|
|
|
-# 健康检查
|
|
|
-HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
|
- CMD php artisan --version || exit 1
|
|
|
+# 健康检查(检查 Nginx 是否响应)
|
|
|
+HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
|
|
+ CMD curl -f http://127.0.0.1:8000/health || exit 1
|
|
|
|
|
|
-# 启动脚本:先启动 dbus,再运行主命令
|
|
|
+# 启动脚本:启动 dbus、php-fpm、nginx
|
|
|
COPY docker-entrypoint.sh /usr/local/bin/
|
|
|
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
|
|
|
|
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
|
|
-CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
|
|
|
+CMD ["nginx", "-g", "daemon off;"]
|