Sealos Docs

应用启动配置

了解如何配置 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 main

2. 验证构建结果

确认构建产物已经正确生成。下面以 Node.js / TypeScript 项目为例,其他语言请按实际构建产物验证:

# 检查构建目录
ls -l dist/

# 测试构建产物
node dist/main.js

3. 配置启动命令

根据构建产物配置 entrypoint.sh。下面是不同项目类型的示例,实际使用时只保留与你项目对应的一段启动命令:

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 应用

按你的项目框架选择其中一种启动方式:

entrypoint.sh
#!/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

编译型后端服务

按你的项目语言选择其中一种启动方式:

entrypoint.sh
#!/bin/bash

# Go
./main

# Java
java -jar app.jar

# Rust
./server

解释型后端服务

按你的项目运行时选择其中一种启动方式:

entrypoint.sh
#!/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 中添加后台进程或守护进程。如果需要运行多个服务,建议拆分为多个应用分别部署。

常见问题

构建相关问题

如果遇到构建相关问题,优先检查:

  1. 构建步骤是否已经在开发环境中完成
  2. 构建产物是否完整
  3. 构建产物所需的运行时依赖是否存在

启动失败

如果应用无法正常启动,优先检查:

  1. 启动命令是否指向正确的构建产物
  2. 必需的环境变量是否已经配置
  3. 应用日志中是否有明确错误信息

权限问题

如果遇到权限错误,确认 entrypoint.sh 有执行权限:

chmod +x entrypoint.sh

同时检查构建产物的执行权限是否正确。

发布前验证

发布应用前,建议按顺序确认:

  1. 已在开发环境中完成构建
  2. 构建产物可以正常运行
  3. entrypoint.sh 可以正确启动应用
./entrypoint.sh

下一步