Add deployment script

Add Dockerfile, docker compose, and update Nix config for deployment
This commit is contained in:
Hafid Nur
2026-02-14 16:44:23 +07:00
parent 5bb5a05a25
commit e3b98d9f35
4 changed files with 49 additions and 1 deletions
+17
View File
@@ -0,0 +1,17 @@
FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --prefer-offline --no-audit --no-fund
FROM node:22-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NX_DAEMON=false
RUN npm run qrcampaign:build
FROM nginx:alpine AS runner
RUN rm -rf /usr/share/nginx/html/*
COPY --from=builder /app/dist/apps/qrcampaign /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
+9
View File
@@ -0,0 +1,9 @@
services:
qrcampaign:
build:
context: .
dockerfile: docker/qrcampaign.Dockerfile
ports:
- '127.0.0.1:3006:80'
restart: unless-stopped
container_name: qrcampaign
+17
View File
@@ -0,0 +1,17 @@
FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --prefer-offline --no-audit --no-fund
FROM node:22-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NX_DAEMON=false
RUN npm run qrcampaign:build
FROM nginx:alpine AS runner
RUN rm -rf /usr/share/nginx/html/*
COPY --from=builder /app/dist/apps/qrcampaign /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
+6 -1
View File
@@ -33,6 +33,7 @@
dimentorin = mkViteApp { name = "dimentorin"; buildScript = "dimentorin:build"; };
hackathon = mkViteApp { name = "hackathon"; buildScript = "hackathon:build"; };
infra = mkViteApp { name = "infra"; buildScript = "infra:build"; };
qrcampaign = mkViteApp { name = "qrcampaign"; buildScript = "qrcampaign:build"; };
# Next.js app
landing = landingApp;
@@ -63,7 +64,7 @@
echo " nx dev <app> - Start development server"
echo " nx build <app> - Build an app"
echo ""
echo "Apps: landing, backoffice, gacha, dimentorin, hackathon"
echo "Apps: landing, backoffice, gacha, dimentorin, hackathon, qrcampaign"
echo ""
echo "Build packages with:"
echo " nix build .#landing"
@@ -71,6 +72,7 @@
echo " nix build .#gacha"
echo " nix build .#dimentorin"
echo " nix build .#hackathon"
echo " nix build .#qrcampaign"
'';
};
}
@@ -84,6 +86,7 @@
dimentorin = import ./nix/modules/static-app.nix { inherit self; } { appName = "dimentorin"; };
hackathon = import ./nix/modules/static-app.nix { inherit self; } { appName = "hackathon"; };
infra = import ./nix/modules/static-app.nix { inherit self; } { appName = "infra"; };
qrcampaign = import ./nix/modules/static-app.nix { inherit self; } { appName = "qrcampaign"; };
# All-in-one module that enables all apps
all = { config, lib, pkgs, ... }: {
@@ -94,6 +97,7 @@
self.nixosModules.dimentorin
self.nixosModules.hackathon
self.nixosModules.infra
self.nixosModules.qrcampaign
];
};
};
@@ -107,6 +111,7 @@
dimentorin = self.packages.${final.system}.dimentorin;
hackathon = self.packages.${final.system}.hackathon;
infra = self.packages.${final.system}.infra;
qrcampaign = self.packages.${final.system}.qrcampaign;
# Function to build hackathon with custom environment variables (e.g., Supabase)
mkHackathonWithEnv = envVars: import ./nix/mkViteApp.nix {
pkgs = final;