应用启动配置
了解如何配置 DevBox 项目的启动命令。
在 Sealos DevBox 中,entrypoint.sh 定义了应用发布后的启动方式。正确配置这个文件,可以确保应用在部署环境中按预期启动和运行。
什么是 entrypoint.sh
在 DevBox 项目中,entrypoint.sh 是应用的启动入口,它通常负责:
- 定义应用启动命令
- 在应用部署后自动执行
- 确保应用以正确方式启动
- 作为项目发布为 OCI 镜像时的关键启动配置
entrypoint.sh只负责启动应用,不应该包含构建步骤。所有构建工作都应该在开发环境中完成。
先在开发环境完成构建
配置 entrypoint.sh 前,先在开发环境中完成应用构建。这样可以:
- 减少应用启动时间
- 避免在运行环境中安装构建依赖
- 确保部署的是已经验证过的构建产物
1. 构建应用
在开发环境中执行构建命令:
# Next.js 应用
npm run build
# TypeScript 应用
npm run build
# Go 应用
go build -o main2. 验证构建结果
确认构建产物已经正确生成。下面以 Node.js / TypeScript 项目为例,其他语言请按实际构建产物验证:
# 检查构建目录
ls -l dist/
# 测试构建产物
node dist/main.js3. 配置启动命令
根据构建产物配置 entrypoint.sh。下面是不同项目类型的示例,实际使用时只保留与你项目对应的一段启动命令:
#!/bin/bash
# Next.js(已启用 output: "standalone")
NODE_ENV=production node .next/standalone/server.js
# 未启用 standalone 时,改用项目实际的生产启动命令,例如:npx next start -p 3000
# TypeScript Node.js
node dist/main.js
# Go
./main常见配置场景
预构建 Web 应用
按你的项目框架选择其中一种启动方式:
#!/bin/bash
# Next.js(已启用 output: "standalone")
NODE_ENV=production node .next/standalone/server.js
# 未启用 standalone 时,改用项目实际的生产启动命令,例如:npx next start -p 3000
# Vue
node server/index.js
# React
npx serve -s build -l 3000编译型后端服务
按你的项目语言选择其中一种启动方式:
#!/bin/bash
# Go
./main
# Java
java -jar app.jar
# Rust
./server解释型后端服务
按你的项目运行时选择其中一种启动方式:
#!/bin/bash
# Python
python app.py
# Node.js
node dist/main.js
# PHP
php -S 0.0.0.0:8000最佳实践
提前完成构建
- 在开发环境中完成所有构建步骤
- 验证构建产物完整性
- 测试构建后的应用能否正常启动
使用正确端口
确保应用监听在正确端口上:
- 优先使用应用要求的环境变量端口
- 手动指定时,使用项目实际暴露的端口
- 监听地址使用
0.0.0.0,不要只监听localhost
正确处理环境变量
如果应用依赖环境变量:
- 在部署时通过应用管理配置环境变量
- 不要在
entrypoint.sh中硬编码敏感信息
不要在
entrypoint.sh中添加后台进程或守护进程。如果需要运行多个服务,建议拆分为多个应用分别部署。
常见问题
构建相关问题
如果遇到构建相关问题,优先检查:
- 构建步骤是否已经在开发环境中完成
- 构建产物是否完整
- 构建产物所需的运行时依赖是否存在
启动失败
如果应用无法正常启动,优先检查:
- 启动命令是否指向正确的构建产物
- 必需的环境变量是否已经配置
- 应用日志中是否有明确错误信息
权限问题
如果遇到权限错误,确认 entrypoint.sh 有执行权限:
chmod +x entrypoint.sh同时检查构建产物的执行权限是否正确。
发布前验证
发布应用前,建议按顺序确认:
- 已在开发环境中完成构建
- 构建产物可以正常运行
entrypoint.sh可以正确启动应用
./entrypoint.sh