From b6e324624209af8ee2d92c50ccc8201dc13571c2 Mon Sep 17 00:00:00 2001 From: Znmin Date: Fri, 19 Dec 2025 20:58:20 +0100 Subject: [PATCH 01/10] Added docker compose + Dockerfile for deployment --- Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ compose/docker-compose.yml | 15 +++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Dockerfile create mode 100644 compose/docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..42d0197 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# --- STAGE 1: Base build environment --- +FROM node:lts-alpine3.23 AS base +WORKDIR /app +COPY package.json package-lock.json ./ + +# Install dependencies +RUN npm ci --legacy-peer-deps +COPY . . + +# Install necessary dependencies for sharp used by next/image (for image optimization) +RUN apk add --no-cache libc6-compat + +# --- STAGE 2: Environments +# Development +FROM base AS development +ARG ENVIRONMENT=development +ENV NODE_ENV=$ENVIRONMENT +EXPOSE 3000 +CMD ["npm", "run", "dev"] + +# Production +FROM base AS build +ARG ENVIRONMENT=production +ENV NODE_ENV=$ENVIRONMENT +RUN npm run build + +#--- STAGE 3: Production runtime environment +FROM node:lts-alpine3.23 AS production +WORKDIR /app +COPY --from=build /app/.next ./.next +COPY --from=build /app/package.json ./package.json +COPY --from=build /app/package-lock.json ./package-lock.json +COPY --from=build /app/public ./public +COPY --from=build /app/node_modules ./node_modules +EXPOSE 3000 +CMD ["npm", "run", "start"] diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml new file mode 100644 index 0000000..e940370 --- /dev/null +++ b/compose/docker-compose.yml @@ -0,0 +1,15 @@ +services: + gsh-website: + image: gsh-website:prod + container_name: gsh-website + build: + context: . + dockerfile: Dockerfile + restart: unless-stopped + ports: + - "4000:3000" + volumes: + - ./public/uploads:/app/public/uploads + command: "npm run start" # Runn in prod mode + networks: + - default From 93ce8c666332e80b56fe89786a52e206308cccd2 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 19 Dec 2025 21:45:27 +0000 Subject: [PATCH 02/10] Restructered deployment --- compose/docker-compose.yml => docker-compose.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename compose/docker-compose.yml => docker-compose.yml (100%) diff --git a/compose/docker-compose.yml b/docker-compose.yml similarity index 100% rename from compose/docker-compose.yml rename to docker-compose.yml From 720428848925b293c5c52578d723077a9166db22 Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:51:11 +0100 Subject: [PATCH 03/10] Update Dockerfile system binary installation before ohter dependencies Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 42d0197..343246d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,13 +3,12 @@ FROM node:lts-alpine3.23 AS base WORKDIR /app COPY package.json package-lock.json ./ -# Install dependencies -RUN npm ci --legacy-peer-deps -COPY . . - # Install necessary dependencies for sharp used by next/image (for image optimization) RUN apk add --no-cache libc6-compat +# Install dependencies +RUN npm ci --legacy-peer-deps +COPY . . # --- STAGE 2: Environments # Development FROM base AS development From c313eafe260428698556e074a7b212e2b3878614 Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:51:29 +0100 Subject: [PATCH 04/10] Update docker-compose.yml fixed spelling mistake Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e940370..710a751 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,6 @@ services: - "4000:3000" volumes: - ./public/uploads:/app/public/uploads - command: "npm run start" # Runn in prod mode + command: "npm run start" # Run in prod mode networks: - default From 48540f252774aba756002f1fdd2e73e4253c4208 Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:51:50 +0100 Subject: [PATCH 05/10] Update Dockerfile Runs as non-root user Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 343246d..897015b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,10 +26,13 @@ RUN npm run build #--- STAGE 3: Production runtime environment FROM node:lts-alpine3.23 AS production WORKDIR /app +RUN addgroup -S appuser && adduser -S appuser -G appuser COPY --from=build /app/.next ./.next COPY --from=build /app/package.json ./package.json COPY --from=build /app/package-lock.json ./package-lock.json COPY --from=build /app/public ./public COPY --from=build /app/node_modules ./node_modules +RUN chown -R appuser:appuser /app +USER appuser EXPOSE 3000 CMD ["npm", "run", "start"] From da3dc938e35e08ee95fd18184ad99f7247c3c4bc Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:57:37 +0100 Subject: [PATCH 06/10] Update Dockerfile Added user creation in dev env Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 897015b..dd642db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,9 @@ COPY . . FROM base AS development ARG ENVIRONMENT=development ENV NODE_ENV=$ENVIRONMENT +RUN addgroup -S appuser && adduser -S appuser -G appuser +RUN chown -R appuser:appuser /app +USER appuser EXPOSE 3000 CMD ["npm", "run", "dev"] From 3729e0a86acbaa32d1a17625c7aec9cb484b977d Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 22:58:06 +0100 Subject: [PATCH 07/10] Update docker-compose.yml removed redundant command Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 710a751..b65dbe1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,5 @@ services: - "4000:3000" volumes: - ./public/uploads:/app/public/uploads - command: "npm run start" # Run in prod mode networks: - default From 5a3042c6065f97f552f03e026fdabd36af83e5b0 Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:13:49 +0100 Subject: [PATCH 08/10] Update docker-compose.yml removed default network Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b65dbe1..83ba0ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,5 +10,3 @@ services: - "4000:3000" volumes: - ./public/uploads:/app/public/uploads - networks: - - default From 72b64cc1745ab315e52ecf2ab1e312f7d7eb46dd Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:30:41 +0100 Subject: [PATCH 09/10] Update Dockerfile copy next.config.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index dd642db..a6ef6da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,6 +33,7 @@ RUN addgroup -S appuser && adduser -S appuser -G appuser COPY --from=build /app/.next ./.next COPY --from=build /app/package.json ./package.json COPY --from=build /app/package-lock.json ./package-lock.json +COPY --from=build /app/next.config.ts ./next.config.ts COPY --from=build /app/public ./public COPY --from=build /app/node_modules ./node_modules RUN chown -R appuser:appuser /app From 86a307c1ac771fbba3c36088cd90c000b4383f2a Mon Sep 17 00:00:00 2001 From: Znmin <84540638+Haranmes@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:31:33 +0100 Subject: [PATCH 10/10] Update docker-compose.yml added ENVIRONMENT section Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 83ba0ce..b32e04a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,3 +10,7 @@ services: - "4000:3000" volumes: - ./public/uploads:/app/public/uploads + environment: + - NODE_ENV=production + # Add additional Next.js runtime configuration below as needed, for example: + # - NEXT_PUBLIC_API_URL=https://api.example.com