Add deployment script
Add Dockerfile, docker compose, and update Nix config for deployment
This commit is contained in:
@@ -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;"]
|
||||||
@@ -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
|
||||||
@@ -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;"]
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
dimentorin = mkViteApp { name = "dimentorin"; buildScript = "dimentorin:build"; };
|
dimentorin = mkViteApp { name = "dimentorin"; buildScript = "dimentorin:build"; };
|
||||||
hackathon = mkViteApp { name = "hackathon"; buildScript = "hackathon:build"; };
|
hackathon = mkViteApp { name = "hackathon"; buildScript = "hackathon:build"; };
|
||||||
infra = mkViteApp { name = "infra"; buildScript = "infra:build"; };
|
infra = mkViteApp { name = "infra"; buildScript = "infra:build"; };
|
||||||
|
qrcampaign = mkViteApp { name = "qrcampaign"; buildScript = "qrcampaign:build"; };
|
||||||
|
|
||||||
# Next.js app
|
# Next.js app
|
||||||
landing = landingApp;
|
landing = landingApp;
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
echo " nx dev <app> - Start development server"
|
echo " nx dev <app> - Start development server"
|
||||||
echo " nx build <app> - Build an app"
|
echo " nx build <app> - Build an app"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Apps: landing, backoffice, gacha, dimentorin, hackathon"
|
echo "Apps: landing, backoffice, gacha, dimentorin, hackathon, qrcampaign"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Build packages with:"
|
echo "Build packages with:"
|
||||||
echo " nix build .#landing"
|
echo " nix build .#landing"
|
||||||
@@ -71,6 +72,7 @@
|
|||||||
echo " nix build .#gacha"
|
echo " nix build .#gacha"
|
||||||
echo " nix build .#dimentorin"
|
echo " nix build .#dimentorin"
|
||||||
echo " nix build .#hackathon"
|
echo " nix build .#hackathon"
|
||||||
|
echo " nix build .#qrcampaign"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -84,6 +86,7 @@
|
|||||||
dimentorin = import ./nix/modules/static-app.nix { inherit self; } { appName = "dimentorin"; };
|
dimentorin = import ./nix/modules/static-app.nix { inherit self; } { appName = "dimentorin"; };
|
||||||
hackathon = import ./nix/modules/static-app.nix { inherit self; } { appName = "hackathon"; };
|
hackathon = import ./nix/modules/static-app.nix { inherit self; } { appName = "hackathon"; };
|
||||||
infra = import ./nix/modules/static-app.nix { inherit self; } { appName = "infra"; };
|
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-in-one module that enables all apps
|
||||||
all = { config, lib, pkgs, ... }: {
|
all = { config, lib, pkgs, ... }: {
|
||||||
@@ -94,6 +97,7 @@
|
|||||||
self.nixosModules.dimentorin
|
self.nixosModules.dimentorin
|
||||||
self.nixosModules.hackathon
|
self.nixosModules.hackathon
|
||||||
self.nixosModules.infra
|
self.nixosModules.infra
|
||||||
|
self.nixosModules.qrcampaign
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -107,6 +111,7 @@
|
|||||||
dimentorin = self.packages.${final.system}.dimentorin;
|
dimentorin = self.packages.${final.system}.dimentorin;
|
||||||
hackathon = self.packages.${final.system}.hackathon;
|
hackathon = self.packages.${final.system}.hackathon;
|
||||||
infra = self.packages.${final.system}.infra;
|
infra = self.packages.${final.system}.infra;
|
||||||
|
qrcampaign = self.packages.${final.system}.qrcampaign;
|
||||||
# Function to build hackathon with custom environment variables (e.g., Supabase)
|
# Function to build hackathon with custom environment variables (e.g., Supabase)
|
||||||
mkHackathonWithEnv = envVars: import ./nix/mkViteApp.nix {
|
mkHackathonWithEnv = envVars: import ./nix/mkViteApp.nix {
|
||||||
pkgs = final;
|
pkgs = final;
|
||||||
|
|||||||
Reference in New Issue
Block a user