diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9b6cca3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.gitignore +node_modules +.opencode/node_modules +.local.env +dist +.vscode +*.log diff --git a/.opencode/tools/dynamic_http_call.ts b/.opencode/tools/dynamic_http_call.ts index 0a58559..f78e9e6 100644 --- a/.opencode/tools/dynamic_http_call.ts +++ b/.opencode/tools/dynamic_http_call.ts @@ -1,6 +1,6 @@ import { tool } from "@opencode-ai/plugin"; -const internalBaseUrl = process.env.TJWATER_AGENT_INTERNAL_BASE_URL ?? "http://127.0.0.1:8788"; +const internalBaseUrl = process.env.TJWATER_AGENT_INTERNAL_BASE_URL ?? "http://127.0.0.1:8787"; const internalToken = process.env.TJWATER_AGENT_INTERNAL_TOKEN ?? ""; export default tool({ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b688e46 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# syntax=docker/dockerfile:1.7 + +FROM oven/bun:1.3.13 AS deps +WORKDIR /app + +COPY package.json bun.lock ./ +COPY .opencode/package.json .opencode/bun.lock ./.opencode/ +RUN bun install --frozen-lockfile + +FROM deps AS build +WORKDIR /app + +COPY tsconfig.json opencode.json README.md ./ +COPY src ./src +COPY .opencode ./.opencode +RUN bun run check + +FROM oven/bun:1.3.13 AS runner +WORKDIR /app + +ENV NODE_ENV=production +ENV HOST=0.0.0.0 +ENV PORT=8787 + +COPY --from=deps /app/node_modules ./node_modules +COPY --from=deps /app/.opencode/node_modules ./.opencode/node_modules +COPY package.json bun.lock ./ +COPY tsconfig.json opencode.json ./ +COPY src ./src +COPY .opencode ./.opencode + +EXPOSE 8787 +CMD ["bun", "src/server.ts"] diff --git a/src/config.ts b/src/config.ts index e8fd3ea..59211c8 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,7 +7,7 @@ dotenv.config({ path: ".local.env", override: false }); // 统一在启动时解析环境变量,避免业务代码里散落字符串默认值。 const envSchema = z.object({ NODE_ENV: z.string().default("development"), - PORT: z.coerce.number().int().positive().default(8788), + PORT: z.coerce.number().int().positive().default(8787), HOST: z.string().default("0.0.0.0"), LOG_LEVEL: z.string().default("info"), AGENT_INTERNAL_TOKEN: z.string().optional(),