在 Docker 中运行 PHP Artisan 命令速度非常慢可能是由于多种原因引起的。以下是一些常见的原因和解决方法,可以帮助你提高 PHP Artisan 命令的执行速度。
Docker 在某些操作系统(如 macOS 和 Windows)上使用文件系统挂载时,性能可能会受到影响。特别是对于大量文件的读写操作,性能问题会更加明显。
cached
或 delegated
挂载选项(仅适用于 Docker for Mac 和 Docker for Windows):
volumes: - .:/var/www/html:cachedLaravel 提供了一些命令来缓存配置和路由,这可以显著提高 Artisan 命令的执行速度。
Composer 的自动加载器在开发模式下可能会变慢。你可以通过优化自动加载器来提高性能。
确保你的 PHP-FPM 和 Nginx 配置是优化的,特别是对于生产环境。
pm.max_children
和其他相关参数以适应你的工作负载。确保你使用的是适合生产环境的 Docker 镜像。例如,使用官方的 PHP 镜像并根据需要进行定制。
FROM php:8.0-fpm
# 安装依赖
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd
# 安装 Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 设置工作目录
WORKDIR /var/www/html
# 复制代码
COPY . .
# 安装 PHP 扩展和 Composer 依赖
RUN docker-php-ext-install pdo pdo_mysql
RUN composer install --optimize-autoloader --no-dev
# 缓存 Laravel 配置和路由
RUN php artisan config:cache
RUN php artisan route:cache
RUN php artisan view:cache
CMD ["php-fpm"]
确保你的 Docker Compose 配置是优化的,特别是对于卷挂载和网络配置。
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www/html:cached
ports:
- "8000:80"
networks:
- app-network
web:
image: nginx:alpine
volumes:
- .:/var/www/html:cached
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- "80:80"
depends_on:
- app
networks:
- app-network
networks:
app-network:
driver: bridge
确保你的开发环境或服务器有足够的硬件资源(CPU、内存、磁盘 I/O)来处理你的工作负载。
领取专属 10元无门槛券
手把手带您无忧上云