Alpine Linux 容器中安装 Laravel 的核心是选用 php:8.3-alpine 镜像,用 apk 安装 php83-pdo_mysql、php83-mbstring 等扩展,手动安装 Composer,执行 composer install --no-dev --optimize-autoloader,创建非 root 用户并设 storage/bootstrap/cache 权限,配置 Nginx + PHP-FPM 协同运行。

Alpine Linux 容器里安装 Laravel 项目,核心是用轻量级 PHP 运行时(如 php:8.3-alpine)替代常规 Ubuntu/Debian 镜像,并适配 Alpine 特有的包管理(apk)、扩展安装方式和权限逻辑。它不是简单复制本地开发流程,而是要兼顾精简、安全与可运行性。
基础镜像选择与 PHP 环境准备
Alpine 默认不带常用 PHP 扩展,必须显式安装。推荐使用官方 PHP Alpine 镜像,并一次性装齐 Laravel 所需组件:
- 用
php:8.3-cli-alpine或php:8.3-fpm-alpine作为基础镜像(CLI 适合 Artisan 命令,FPM 适合 Nginx 反向代理) - 通过
apk add安装必要扩展:比如php83-pdo_mysql、php83-mbstring、php83-xml、php83-opcache、php83-curl、php83-zip - 注意 Alpine 的 PHP 包命名规则:版本号嵌入(如
php83-),不能直接写php-mbstring - 启用 OPCache 并调优(如
opcache.memory_consumption=128)对性能很关键,Alpine 资源有限,更需靠缓存提效
Composer 安装与依赖部署
Alpine 的 curl 和 openssl 是默认启用的,但 Composer 必须手动安装(官方镜像不含):
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 在 Dockerfile 中添加:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - 运行
composer install --no-dev --optimize-autoloader(禁用 dev 依赖、生成优化自动加载,减小体积) - 避免在容器中执行
composer create-project—— 应该把代码提前构建好,再 COPY 进容器,保证镜像层稳定、可复现 - 若需 Git(例如拉取私有包),额外安装
git和openssh,并配置 SSH 密钥(建议用RUN --mount=type=ssh方式挂载)
文件权限与运行用户安全配置
Alpine 默认以 root 运行,但生产容器应降权;同时 Laravel 的 storage 和 bootstrap/cache 必须可写:
- 创建非 root 用户(如
www-data或自定义laravel用户),用adduser -D -u 1001 laravel - 设置目录属主:
chown -R laravel:laravel storage bootstrap/cache,并赋予组写权限(chmod -R 775或更严格的755 + g+w) - Artisan 命令和 Web 请求都应以该用户身份执行(FPM 配置中设
user = laravel,CLI 命令前加su laravel -c "php artisan ...") - 禁止
storage/logs对外暴露,Nginx 配置中应屏蔽/storage/logs/.*访问路径
Nginx + PHP-FPM 协同运行要点
单容器中跑 Nginx + PHP-FPM 是常见模式,但 Alpine 下要注意进程管理与信号传递:
- 使用
nginx:alpine镜像或在 PHP 镜像中额外apk add nginx - Nginx 配置中
fastcgi_pass指向127.0.0.1:9000(PHP-FPM 监听)或 Unix socket(更高效:unix:/run/php/php-fpm.sock) - PHP-FPM 配置需启用
clear_env = no,否则.env中的变量可能被清空 - 入口脚本(如
entrypoint.sh)应先运行php-fpm -D,再nginx -g "daemon off;",确保前台进程不退出 - 务必挂载
/var/log/nginx和storage/logs到宿主机或日志驱动,方便排查

















