From 03440d269d98c073ea420f3376c17ce84632de5a Mon Sep 17 00:00:00 2001 From: amania-jailbreak Date: Wed, 5 Aug 2026 14:52:06 +0900 Subject: [PATCH] =?UTF-8?q?api:=20=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=81=A8=E3=83=87=E3=83=97=E3=83=AD=E3=82=A4=E3=82=B3?= =?UTF-8?q?=E3=83=9F=E3=83=83=E3=83=88=E3=82=92=E8=BF=94=E3=81=99=20/versi?= =?UTF-8?q?on=20=E3=82=A8=E3=83=B3=E3=83=89=E3=83=9D=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - package.jsonのversionとビルド時注入のコミットSHA(APP_COMMIT)を返す - CoolifyのSOURCE_COMMITをbuild argとして受けるためDockerfile/composeを更新 - authModeも含め、デプロイ状態の切り分けに使えるようにした --- Dockerfile | 5 +++++ apps/api/src/server.ts | 8 ++++++++ docker-compose.yml | 3 +++ 3 files changed, 16 insertions(+) diff --git a/Dockerfile b/Dockerfile index cada23e..e047663 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,11 @@ FROM node:22-bookworm WORKDIR /workspace +# Build-time commit SHA, injected by docker compose (SOURCE_COMMIT) or Coolify. +# Exposed to the API at /version for deploy diagnostics. +ARG APP_COMMIT=unknown +ENV APP_COMMIT=${APP_COMMIT} + # package-lock.json is committed, so npm ci installs the exact dependency tree. COPY package.json package-lock.json ./ diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts index e25f881..2ebe96e 100644 --- a/apps/api/src/server.ts +++ b/apps/api/src/server.ts @@ -4,6 +4,7 @@ import Fastify, { type FastifyReply, type FastifyRequest } from "fastify"; import cookie from "@fastify/cookie"; import cors from "@fastify/cors"; import { z } from "zod"; +import pkg from "../../../package.json" with { type: "json" }; import { buildSourceDocument } from "../../../packages/core/src/index"; import type { Identity } from "../../../packages/core/src/index"; import { loadConfig } from "./config"; @@ -85,6 +86,13 @@ export async function createServer() { await registerAuthRoutes(app, appConfig); app.get("/healthz", async () => ({ ok: true, service: "altdock-api", storageMode: appConfig.STORAGE_MODE })); + app.get("/version", async () => ({ + name: "altdock-api", + version: pkg.version, + commit: process.env.APP_COMMIT || process.env.SOURCE_COMMIT || "unknown", + authMode: appConfig.AUTH_MODE, + node: process.version, + })); app.get("/api/v1/me", async (request, reply) => { const identity = await requireIdentity(request, reply, appConfig); diff --git a/docker-compose.yml b/docker-compose.yml index 74a5f82..26d561d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,9 @@ x-altdock-app: &altdock-app build: context: . dockerfile: Dockerfile + args: + # Coolify provides SOURCE_COMMIT at build time; falls back to unknown. + APP_COMMIT: ${SOURCE_COMMIT:-unknown} working_dir: /workspace restart: unless-stopped