From be2455dda09b2b1f189ffa1d2b33a7651d11e53a Mon Sep 17 00:00:00 2001 From: NotII <46204250+NotII@users.noreply.github.com> Date: Sun, 6 Apr 2025 16:00:44 +0100 Subject: [PATCH] test --- Dockerfile | 21 ++++++++++++++------- lib/git-utils.ts | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index cd603e8..8227ac1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Use official Node.js image as base -FROM node:18-alpine AS builder +FROM node:20-alpine as builder WORKDIR /app COPY package.json package-lock.json ./ @@ -7,9 +7,13 @@ RUN npm install --force COPY . . -# Install git, get commit hash -RUN apk add --no-cache git \ - && git rev-parse --short HEAD > /app/git_commit_sha +# Install git and get commit hash +RUN apk add --no-cache git && \ + if [ -d .git ]; then \ + git rev-parse --short HEAD > /app/git_commit_sha; \ + else \ + echo "unknown" > /app/git_commit_sha; \ + fi ENV NEXT_PUBLIC_API_URL=/api @@ -19,7 +23,7 @@ ENV NEXT_PUBLIC_API_URL=/api RUN echo "Building with GIT_COMMIT_SHA=$(cat /app/git_commit_sha)" && npm run build # ---- Production Stage ---- -FROM node:18-alpine AS runner +FROM node:20-alpine # Set working directory inside the container WORKDIR /app @@ -30,19 +34,22 @@ RUN mkdir -p /app/public COPY --from=builder /app/package.json /app/package-lock.json ./ COPY --from=builder /app/.next ./.next COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/public ./public +COPY --from=builder /app/next.config.mjs ./next.config.mjs # Copy commit hash file from builder stage COPY --from=builder /app/git_commit_sha /app/git_commit_sha +RUN cat /app/git_commit_sha EXPOSE 3000 ENV NODE_ENV=production ENV NEXT_PUBLIC_API_URL=/api -ENV SERVER_API_URL=https://internal-api.inboxi.ng/api +ENV SERVER_API_URL=https://internal-api.inboxi.ng # Set GIT_COMMIT_SHA environment variable in the final image by reading the file ENV GIT_COMMIT_SHA="$(cat /app/git_commit_sha)" # Start Next.js server -CMD ["npm", "run", "start"] \ No newline at end of file +CMD ["npm", "start"] \ No newline at end of file diff --git a/lib/git-utils.ts b/lib/git-utils.ts index 72fc3d0..ea1f0fc 100644 --- a/lib/git-utils.ts +++ b/lib/git-utils.ts @@ -31,6 +31,28 @@ export async function getGitCommitInfo(): Promise { return gitInfo; } + // In Docker, the hash might be stored in a file at /app/git_commit_sha + if (typeof window === 'undefined') { + try { + const fs = require('fs'); + const path = require('path'); + + // Check for Docker-specific git hash file + const dockerGitHashPath = '/app/git_commit_sha'; + if (fs.existsSync(dockerGitHashPath)) { + const hash = fs.readFileSync(dockerGitHashPath, 'utf8').trim(); + const gitInfo: GitInfo = { + commitHash: hash, + buildTime: new Date().toISOString(), + }; + cachedGitInfo = gitInfo; + return gitInfo; + } + } catch (error) { + console.warn('Could not read git hash from Docker file', error); + } + } + // In the browser, fetch from the public directory if (typeof window !== 'undefined') { try {