mcpField
D
deploy-to-temps

deploy-to-temps

github.com/gotempsh云与 DevOps87660 次安装今天更新
代码仓库

关于 deploy-to-temps

这是一份将应用部署到 Temps 的指南,介绍框架检测、构建配置,以及 CLI 和 Git 部署流程,也涵盖环境变量、回滚与故障排查。

主要功能

  1. 01框架检测与构建命令
  2. 02CLI 和 Git 部署指引
  3. 03Dockerfile 生成示例
  4. 04环境与资源配置
  5. 05回滚和故障排查指引

适用场景

  1. 01将支持的应用部署到 Temps
  2. 02设置由 Git 推送触发的部署
  3. 03回滚部署或排查部署问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gotempsh/temps --skill deploy-to-temps

安装后在 Claude Code 中输入/deploy-to-temps确认已加载。

详细介绍

部署到 Temps

通过自动框架检测和优化构建,将应用部署到 Temps。

支持的框架

框架检测方式构建命令
Next.jsnext.config.*next build
Vitevite.config.*vite build
Create React Apppackage.json 中的 react-scriptsreact-scripts build
Remixremix.config.*remix build
Express/Node.js依赖项中的 expressnpm run build(如果存在)
NestJS依赖项中的 @nestjs/corenest build
Python/Flaskrequirements.txt + app.py-
Python/Djangomanage.pypython manage.py collectstatic
Gogo.modgo build
RustCargo.tomlcargo build --release

快速部署

通过 Git 集成
  1. 在 Temps 控制面板中连接你的 Git 提供商
  2. 选择仓库和分支
  3. Temps 会自动检测框架并部署
通过 CLI
# Install Temps CLI
npm install -g @temps-sdk/cli

# Login
temps login

# Deploy current directory
temps deploy

# Deploy with specific settings
temps deploy --project my-app --branch main

Dockerfile 生成

Temps 会自动生成经过优化的 Dockerfile。如有自定义需求:

Next.js(独立模式)
FROM node:20-alpine AS base

FROM base AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3000
ENV PORT=3000
CMD ["node", "server.js"]
Node.js(Express/Fastify)
FROM node:20-alpine
WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

ENV NODE_ENV=production
USER node
EXPOSE 3000
CMD ["node", "dist/index.js"]
Python(Flask/FastAPI)
FROM python:3.11-slim
WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENV PYTHONUNBUFFERED=1
EXPOSE 8000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]
Go
FROM golang:1.21-alpine AS builder
WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/

COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]

环境变量

在 Temps 控制面板中或通过 CLI 配置:

# Set environment variable
temps env set DATABASE_URL="postgres://..."

# Set from .env file
temps env import .env

# List variables
temps env list

构建配置

在项目根目录中创建 temps.json:

{
  "name": "my-app",
  "framework": "nextjs",
  "buildCommand": "npm run build",
  "installCommand": "npm ci",
  "outputDirectory": ".next",
  "nodeVersion": "20",
  "env": {
    "NODE_ENV": "production"
  }
}

基于 Git 的部署

推送时自动部署
  1. 在 Temps 控制面板中启用“自动部署”
  2. 选择要自动部署的分支
  3. 每次推送都会触发新的部署
预览部署

启用“预览部署”后,每个 PR 都会生成唯一 URL。

部署钩子

为自定义 CI/CD 创建 Webhook:

curl -X POST https://your-temps.com/api/projects/123/deploy \
  -H "Authorization: Bearer $TEMPS_DEPLOY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"branch": "main", "commit": "abc123"}'

回滚

# List deployments
temps deployments list

# Rollback to specific deployment
temps rollback --deployment-id 456

# Rollback to previous
temps rollback --previous

健康检查

在 temps.json 中配置健康检查:

{
  "healthCheck": {
    "path": "/api/health",
    "interval": 30,
    "timeout": 10,
    "unhealthyThreshold": 3
  }
}

资源配置

{
  "resources": {
    "cpu": "0.5",
    "memory": "512Mi",
    "replicas": {
      "min": 1,
      "max": 5
    }
  }
}

故障排除

构建失败?

  • 检查控制面板中的构建日志
  • 确认 buildCommand 正确
  • 确保所有依赖项都已列在 package.json 中

容器无法启动?

  • 检查是否使用了 PORT 环境变量
  • 确认健康检查端点可用
  • 查看容器日志

部署卡住?

  • 检查是否超出资源限制
  • 确认 Docker 镜像可在本地构建
  • 查看部署日志

评论

支持 Markdown