diff --git a/.dockerignore b/.dockerignore index 3c8b2bc..75eb186 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,9 +14,9 @@ build .env.local .env*.local -# Git -.git -.gitignore +# Git (NICHT ausschließen - wird für Version-Extraktion benötigt!) +# .git wird benötigt für: git describe --tags --always +# .gitignore # IDE .vscode diff --git a/Dockerfile b/Dockerfile index 1210498..fe767d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,11 +23,13 @@ RUN apk add --no-cache git COPY --from=deps /app/node_modules ./node_modules COPY . . -# Extract version: use build arg if provided, otherwise get from git +# Extract version: use build arg if provided, otherwise get from git, fallback to package.json RUN if [ -n "$APP_VERSION" ]; then \ echo "$APP_VERSION" > /tmp/version.txt; \ else \ - git describe --tags --always 2>/dev/null > /tmp/version.txt || echo "unknown" > /tmp/version.txt; \ + (git describe --tags --always 2>/dev/null || \ + (grep -o '"version": "[^"]*"' package.json 2>/dev/null | cut -d'"' -f4 | sed 's/^/v/') || \ + echo "dev") > /tmp/version.txt; \ fi && \ echo "Building version: $(cat /tmp/version.txt)" diff --git a/app/api/version/route.ts b/app/api/version/route.ts index 3c7c710..0b4b00d 100644 --- a/app/api/version/route.ts +++ b/app/api/version/route.ts @@ -15,7 +15,7 @@ export async function GET() { for (const versionFilePath of versionPaths) { if (existsSync(versionFilePath)) { const version = readFileSync(versionFilePath, 'utf-8').trim(); - if (version && version !== 'unknown') { + if (version && version !== 'unknown' && version !== '') { return NextResponse.json({ version }); } } @@ -26,6 +26,19 @@ export async function GET() { return NextResponse.json({ version: process.env.APP_VERSION }); } + // Fallback: check package.json + try { + const packageJsonPath = join(process.cwd(), 'package.json'); + if (existsSync(packageJsonPath)) { + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + if (packageJson.version) { + return NextResponse.json({ version: `v${packageJson.version}` }); + } + } + } catch { + // Ignore package.json read errors + } + // Fallback: try to get from git (local development) let version = 'dev';