如何部署Laravel+Inertia+Vue3应用及Docker环境下的MariaDB数据库
平台选择建议
1. 全托管PaaS平台
- Heroku:适合快速验证项目,支持Laravel一键部署,可搭配其自带或第三方托管的MariaDB,免费层能满足测试需求,但生产环境需付费解锁更多资源。
- DigitalOcean App Platform:兼顾灵活性与易用性,支持自定义Docker镜像,自带MariaDB托管服务,性价比突出,适合中小型生产项目。
- Laravel Forge:Laravel专属托管工具,可一键对接DigitalOcean、AWS等云服务器,自动配置Nginx、PHP、数据库等环境,熟悉Laravel生态的开发者能快速上手,兼顾定制化需求。
2. VPS/云服务器
- DigitalOcean Droplets:入门门槛低,价格亲民,适合需要完全自定义运行环境的场景,可自行配置Docker、Web服务等。
- AWS Lightsail:AWS生态下的轻量化VPS,操作简单,可搭配AWS RDS托管MariaDB,适合有后续拓展需求的项目。
- Linode:稳定性强,配置流程简洁,与DigitalOcean类似,适合中小规模项目部署。
3. 容器化平台
- Docker Swarm/Kubernetes:如果本地已用Docker开发,可直接迁移容器化部署,适合具备DevOps经验的团队,能实现自动化运维与弹性扩容。
- AWS ECS / Google Cloud Run:全托管容器平台,无需管理集群,上传Docker镜像即可运行,大幅降低容器化项目的运维成本。
具体部署方案
方案1:全托管PaaS快速部署(以DigitalOcean App Platform为例)
- 确保项目代码托管在GitHub/GitLab,提前整理好生产环境的
.env变量(如数据库连接信息、APP_KEY)。 - 在DigitalOcean后台进入App Platform,导入代码仓库,选择Laravel作为构建类型。
- 添加托管数据库,指定MariaDB 10.8.x版本,平台会自动生成数据库连接参数。
- 触发部署:平台将自动完成依赖安装、
php artisan migrate、php artisan storage:link等操作,部署完成后即可访问应用。
方案2:VPS手动部署(结合Docker)
- 购买Ubuntu系统的VPS,通过SSH登录服务器。
- 安装Docker与Docker Compose:
sudo apt update && sudo apt install docker.io docker-compose -y - 通过Git克隆项目代码到服务器,或用SCP上传本地代码。
- 编写生产环境的
docker-compose.yml(参考本地配置调整):version: '3.8' services: app: build: . ports: - "80:80" environment: - APP_ENV=production - DB_HOST=db - DB_DATABASE=prod_db - DB_USERNAME=prod_user - DB_PASSWORD=prod_pass depends_on: - db db: image: mariadb:10.8.3 volumes: - db_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root_pass - MYSQL_DATABASE=prod_db - MYSQL_USER=prod_user - MYSQL_PASSWORD=prod_pass volumes: db_data: - 启动容器:
docker-compose up -d - 进入应用容器完成初始化:
docker-compose exec app php artisan migrate --force docker-compose exec app php artisan optimize:clear docker-compose exec app php artisan storage:link - 可选:配置Nginx反向代理与SSL证书,实现域名访问与HTTPS加密。
方案3:Laravel Forge部署
- 注册Laravel Forge账号,对接你的云服务器(如DigitalOcean)。
- 创建站点,输入域名,选择Laravel项目类型并导入Git仓库。
- 在Forge后台创建MariaDB 10.8.x数据库,平台自动生成连接信息。
- 触发部署:Forge会自动安装PHP、Nginx、Composer,拉取代码、安装依赖、执行迁移,还可配置代码推送后自动部署的规则。
内容的提问来源于stack exchange,提问作者Vladislav Marinov
相关产品推荐
相关产品推荐

