在 ECS(阿里云Elastic Compute Service) 上启动多个 Spring Boot 项目,有多种实现方式,具体取决于你的需求、资源限制以及部署方式。以下是几种常见的方案:
✅ 方案一:单台 ECS 启动多个 Spring Boot 应用(端口不同)
原理:
在同一台 ECS 实例上运行多个 Spring Boot 应用,通过配置不同的启动端口来区分。
步骤:
-
上传多个 Spring Boot jar 包
- 比如:
app1.jar,app2.jar
- 比如:
-
修改 application.properties 配置端口
# app1 的配置 server.port=8080 # app2 的配置 server.port=8081 -
使用后台进程启动每个应用
nohup java -jar app1.jar > app1.log & nohup java -jar app2.jar > app2.log & -
检查端口是否开放
- 确保 ECS 安全组中放行了这些端口(如 8080, 8081)
-
访问测试
http://<ecs-ip>:8080 http://<ecs-ip>:8081
✅ 方案二:使用 Nginx 做反向(统一入口)
如果你希望对外只暴露一个端口(比如 80 或 443),可以使用 Nginx 做反向。
示例 Nginx 配置:
server {
listen 80;
location /app1/ {
proxy_pass http://localhost:8080/;
}
location /app2/ {
proxy_pass http://localhost:8081/;
}
}
这样你可以通过:
http://<ecs-ip>/app1/http://<ecs-ip>/app2/
访问两个不同的 Spring Boot 应用。
✅ 方案三:使用 Docker 容器化部署多个 Spring Boot 应用
优点:
- 更好的隔离性
- 易于管理与扩展
- 可以使用 Docker Compose 快速部署
示例:Docker Compose 文件
version: '3'
services:
springboot-app1:
image: your-registry/app1:latest
ports:
- "8080:8080"
container_name: app1
springboot-app2:
image: your-registry/app2:latest
ports:
- "8081:8081"
container_name: app2
启动命令:
docker-compose up -d
✅ 方案四:使用多个 ECS 实例部署(适合生产环境)
如果你的项目需要高可用或资源隔离,可以为每个 Spring Boot 应用分配单独的 ECS 实例,并结合 SLB(负载均衡)进行流量分发。
🔐 注意事项:
| 项目 | 说明 |
|---|---|
| 端口冲突 | 确保各个应用监听的端口不冲突 |
| 内存限制 | 单个 ECS 实例内存要足够支持多个 Java 进程 |
| 日志管理 | 推荐将日志输出到独立文件,便于排查问题 |
| 安全组设置 | 放行对应的应用端口 |
| JVM 参数优化 | 多个 Java 应用共存时注意 -Xms 和 -Xmx 设置 |
🧩 衍生建议
如果未来你打算扩展更多服务或微服务架构,可以考虑:
- 使用 Kubernetes (ACK) 来管理容器化应用
- 使用 阿里云 Serverless 应用引擎(SAE) 替代 ECS,免运维部署 Spring Boot 应用
如果你告诉我你当前使用的 Spring Boot 版本、打包方式(jar/war)、是否已有服务器环境等信息,我可以给出更具体的脚本和配置示例 😊
ECLOUD博客