如何正确部署基于Laravel Sail的Docker化生产环境应用
Laravel Sail应用生产环境部署指引
先澄清:生产环境完全可以用Docker
所谓“生产环境不能用Docker”的说法早已过时,当前Docker/K8s是主流生产部署方案之一,大量大型应用依靠容器化实现环境一致性、快速扩容、简化运维等核心优势。你的Docker化应用完全可以直接部署到生产环境,无需推翻现有架构。
基于Docker的生产部署步骤
1. 优化Sail的Docker配置
Sail默认配置面向开发环境,生产环境需针对性调整:
- 复制
docker-compose.yml并重命名为docker-compose.prod.yml,移除开发专属服务(如xdebug、mailhog,以及数据库/缓存的本地目录映射) - 调整PHP、Nginx镜像为生产版本,启用opcache,关闭调试相关配置
- 更新环境变量:设置
APP_ENV=production、APP_DEBUG=false,替换数据库、缓存等服务的生产环境连接信息
2. 构建生产镜像
在本地或CI/CD环境完成生产镜像构建:
# 安装生产依赖(排除开发依赖) composer install --no-dev --optimize-autoloader # 编译前端资源 npm install && npm run build # 构建生产镜像(若使用自定义Dockerfile) docker build -t your-app-image:prod .
3. 部署到生产服务器
- 将构建好的镜像推送到私有镜像仓库(如Docker Hub私有库、云服务商镜像仓库),或直接将镜像文件传输至生产服务器
- 在生产服务器上安装Docker与Docker Compose
- 上传
docker-compose.prod.yml和.env.production文件,启动容器:
docker-compose -f docker-compose.prod.yml up -d
- 执行生产环境必备初始化命令:
docker-compose -f docker-compose.prod.yml exec php php artisan config:cache docker-compose -f docker-compose.prod.yml exec php php artisan route:cache docker-compose -f docker-compose.prod.yml exec php php artisan migrate --force
4. 配置反向代理与SSL
- 使用Nginx或Traefik搭建反向代理,将外部请求转发至容器内的Nginx服务
- 配置SSL证书(如通过Let's Encrypt获取免费证书),确保应用支持HTTPS访问
非Docker的替代部署方案
若坚持不使用Docker,可将Sail环境内的代码直接部署到传统服务器:
- 在生产服务器上安装对应版本的PHP、Nginx、MySQL/Redis等依赖服务
- 将代码上传至服务器,安装生产依赖:
composer install --no-dev --optimize-autoloader - 编译前端资源:
npm install && npm run build - 配置Nginx站点,将根目录指向Laravel的
public文件夹 - 设置生产环境变量,执行缓存、迁移等命令,重启PHP-FPM与Nginx服务
内容的提问来源于stack exchange,提问作者Yuu
相关产品推荐
相关产品推荐

