reduce image size of hub and disptach container
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
FROM node:22-alpine AS base
|
||||
|
||||
ARG NEXT_PUBLIC_DISPATCH_URL
|
||||
ARG NEXT_PUBLIC_DISPATCH_SERVER_URL
|
||||
ARG NEXT_PUBLIC_HUB_URL
|
||||
ARG NEXT_PUBLIC_DISPATCH_SERVICE_ID
|
||||
ARG NEXT_PUBLIC_LIVEKIT_URL
|
||||
ARG NEXT_PUBLIC_DISCORD_URL
|
||||
ARG NEXT_PUBLIC_OPENAIP_ACCESS
|
||||
ARG NEXT_PUBLIC_DISPATCH_URL="http://localhost:3001"
|
||||
ARG NEXT_PUBLIC_DISPATCH_SERVER_URL="http://localhost:4001"
|
||||
ARG NEXT_PUBLIC_HUB_URL="http://localhost:3002"
|
||||
ARG NEXT_PUBLIC_DISPATCH_SERVICE_ID="1"
|
||||
ARG NEXT_PUBLIC_LIVEKIT_URL="http://localhost:7880"
|
||||
ARG NEXT_PUBLIC_DISCORD_URL="https://discord.com"
|
||||
ARG NEXT_PUBLIC_OPENAIP_ACCESS=""
|
||||
|
||||
ENV NEXT_PUBLIC_DISPATCH_SERVER_URL=$NEXT_PUBLIC_DISPATCH_SERVER_URL
|
||||
ENV NEXT_PUBLIC_DISPATCH_URL=$NEXT_PUBLIC_DISPATCH_URL
|
||||
@@ -16,13 +16,13 @@ ENV NEXT_PUBLIC_LIVEKIT_URL=$NEXT_PUBLIC_LIVEKIT_URL
|
||||
ENV NEXT_PUBLIC_OPENAIP_ACCESS=$NEXT_PUBLIC_OPENAIP_ACCESS
|
||||
ENV NEXT_PUBLIC_DISCORD_URL=$NEXT_PUBLIC_DISCORD_URL
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
ENV PNPM_HOME="/usr/local/pnpm"
|
||||
ENV PATH="${PNPM_HOME}:${PATH}"
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
RUN pnpm add -g turbo@^2.5
|
||||
|
||||
FROM base AS builder
|
||||
RUN apk update
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
@@ -31,12 +31,20 @@ WORKDIR /usr/app
|
||||
RUN echo "NEXT_PUBLIC_HUB_URL is: $NEXT_PUBLIC_HUB_URL"
|
||||
RUN echo "NEXT_PUBLIC_DISPATCH_SERVICE_ID is: $NEXT_PUBLIC_DISPATCH_SERVICE_ID"
|
||||
RUN echo "NEXT_PUBLIC_DISPATCH_SERVER_URL is: $NEXT_PUBLIC_DISPATCH_SERVER_URL"
|
||||
RUN echo "NEXT_PUBLIC_LIVEKIT_URL is: $NEXT_PUBLIC_LIVEKIT_URL"
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN turbo prune dispatch --docker
|
||||
|
||||
FROM base AS installer
|
||||
|
||||
ENV PNPM_HOME="/usr/local/pnpm"
|
||||
ENV PATH="${PNPM_HOME}:${PATH}"
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
RUN pnpm add -g turbo@^2.5
|
||||
|
||||
RUN apk update
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
@@ -50,19 +58,25 @@ COPY --from=builder /usr/app/out/full/ .
|
||||
|
||||
RUN turbo run build
|
||||
|
||||
FROM base AS runner
|
||||
FROM node:22-alpine AS runner
|
||||
WORKDIR /usr/app
|
||||
|
||||
# Don't run production as root
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
USER nextjs
|
||||
|
||||
# Automatically leverage output traces to reduce image size
|
||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/ ./
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/.next/standalone ./
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/.next/static ./apps/dispatch/.next/static
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/public ./apps/dispatch/public
|
||||
|
||||
USER nextjs
|
||||
|
||||
# Expose the application port
|
||||
EXPOSE 3001
|
||||
|
||||
CMD ["pnpm", "--dir", "apps/dispatch", "run", "start"]
|
||||
ENV PORT=3001
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["node", "apps/dispatch/server.js"]
|
||||
@@ -2,7 +2,6 @@ import { MissionSdsLog, Station } from "@repo/db";
|
||||
import { fmsStatusDescription } from "_data/fmsStatusDescription";
|
||||
import { DisplayLineProps } from "(app)/pilot/_components/mrt/Mrt";
|
||||
import { create } from "zustand";
|
||||
import { syncTabs } from "zustand-sync-tabs";
|
||||
|
||||
interface SetSdsPageParams {
|
||||
page: "sds";
|
||||
@@ -41,9 +40,7 @@ interface MrtStore {
|
||||
setLines: (lines: MrtStore["lines"]) => void;
|
||||
}
|
||||
|
||||
export const useMrtStore = create<MrtStore>(
|
||||
syncTabs(
|
||||
(set) => ({
|
||||
export const useMrtStore = create<MrtStore>((set) => ({
|
||||
page: "home",
|
||||
pageData: {
|
||||
message: "",
|
||||
@@ -165,9 +162,4 @@ export const useMrtStore = create<MrtStore>(
|
||||
break;
|
||||
}
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: "mrt-store", // unique name
|
||||
},
|
||||
),
|
||||
);
|
||||
}));
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Mission, Station, User } from "@repo/db";
|
||||
import { DisplayLineProps } from "(app)/pilot/_components/dme/Dme";
|
||||
import { create } from "zustand";
|
||||
import { syncTabs } from "zustand-sync-tabs";
|
||||
|
||||
interface SetHomePageParams {
|
||||
page: "home";
|
||||
@@ -45,9 +44,7 @@ interface MrtStore {
|
||||
|
||||
let interval: NodeJS.Timeout | null = null;
|
||||
|
||||
export const useDmeStore = create<MrtStore>(
|
||||
syncTabs(
|
||||
(set) => ({
|
||||
export const useDmeStore = create<MrtStore>((set) => ({
|
||||
page: "home",
|
||||
pageData: {
|
||||
message: "",
|
||||
@@ -233,9 +230,4 @@ export const useDmeStore = create<MrtStore>(
|
||||
break;
|
||||
}
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: "dme-store", // unique name
|
||||
},
|
||||
),
|
||||
);
|
||||
}));
|
||||
|
||||
1
apps/dispatch/next-env.d.ts
vendored
1
apps/dispatch/next-env.d.ts
vendored
@@ -1,5 +1,6 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
import "./.next/types/routes.d.ts";
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {};
|
||||
const nextConfig = {
|
||||
output: "standalone",
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
|
||||
@@ -60,7 +60,6 @@
|
||||
"tailwindcss": "^4.1.11",
|
||||
"typescript": "^5.8.3",
|
||||
"zod": "^3.25.67",
|
||||
"zustand": "^5.0.6",
|
||||
"zustand-sync-tabs": "^0.2.2"
|
||||
"zustand": "^5.0.6"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
FROM node:22-alpine AS base
|
||||
|
||||
|
||||
ENV PNPM_HOME="/usr/local/pnpm"
|
||||
ENV PATH="${PNPM_HOME}:${PATH}"
|
||||
|
||||
ARG NEXT_PUBLIC_HUB_URL
|
||||
ARG NEXT_PUBLIC_HUB_SERVER_URL
|
||||
ARG NEXT_PUBLIC_DISCORD_URL
|
||||
@@ -16,13 +12,13 @@ ENV NEXT_PUBLIC_DISCORD_URL=${NEXT_PUBLIC_DISCORD_URL}
|
||||
ENV NEXT_PUBLIC_MOODLE_URL=${NEXT_PUBLIC_MOODLE_URL}
|
||||
ENV NEXT_PUBLIC_DISPATCH_URL=${NEXT_PUBLIC_DISPATCH_URL}
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
|
||||
RUN echo "NEXT_PUBLIC_DISCORD_URL=${NEXT_PUBLIC_DISCORD_URL}"
|
||||
RUN pnpm add -g turbo@^2.5
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
ENV PNPM_HOME="/usr/local/pnpm"
|
||||
ENV PATH="${PNPM_HOME}:${PATH}"
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
RUN pnpm add -g turbo@^2.5
|
||||
RUN apk update
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
@@ -33,6 +29,13 @@ COPY . .
|
||||
RUN turbo prune hub --docker
|
||||
|
||||
FROM base AS installer
|
||||
|
||||
ENV PNPM_HOME="/usr/local/pnpm"
|
||||
ENV PATH="${PNPM_HOME}:${PATH}"
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
RUN pnpm add -g turbo@^2.5
|
||||
|
||||
RUN apk update
|
||||
RUN apk add --no-cache libc6-compat
|
||||
|
||||
@@ -44,21 +47,27 @@ RUN pnpm install
|
||||
# Build the project
|
||||
COPY --from=builder /usr/app/out/full/ .
|
||||
|
||||
RUN turbo run build
|
||||
RUN turbo run build --filter=hub...
|
||||
|
||||
FROM base AS runner
|
||||
FROM node:22-alpine AS runner
|
||||
WORKDIR /usr/app
|
||||
|
||||
# Don't run production as root
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
USER nextjs
|
||||
|
||||
# Automatically leverage output traces to reduce image size
|
||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/ ./
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/hub/.next/standalone ./
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/hub/.next/static ./apps/hub/.next/static
|
||||
COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/hub/public ./apps/hub/public
|
||||
|
||||
USER nextjs
|
||||
|
||||
# Expose the application port
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["pnpm", "--dir", "apps/hub", "run", "start"]
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["node", "apps/hub/server.js"]
|
||||
@@ -2,6 +2,7 @@
|
||||
/* const removeImports = require("next-remove-imports")(); */
|
||||
/* const nextConfig = removeImports({}); */
|
||||
const nextConfig = {
|
||||
output: "standalone",
|
||||
images: {
|
||||
domains: ["cdn.discordapp.com", "nextcloud.virtualairrescue.com"],
|
||||
},
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"node": ">=18",
|
||||
"pnpm": ">=10"
|
||||
},
|
||||
"packageManager": "pnpm@10.13.1",
|
||||
"packageManager": "pnpm@10.28.0",
|
||||
"workspaces": [
|
||||
"apps/*",
|
||||
"packages/*"
|
||||
|
||||
521
pnpm-lock.yaml
generated
521
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,9 @@ overrides:
|
||||
next@>=15.0.0 <=15.4.4: '>=15.4.5'
|
||||
next@>=15.0.0-canary.0 <15.4.7: '>=15.4.7'
|
||||
next@>=15.4.0-canary.0 <15.4.8: '>=15.4.8'
|
||||
next@>=15.4.0-canary.0 <15.4.9: '>=15.4.9'
|
||||
nodemailer@<7.0.7: '>=7.0.7'
|
||||
nodemailer@<=7.0.10: '>=7.0.11'
|
||||
playwright@<1.55.1: '>=1.55.1'
|
||||
preact@>=10.26.5 <10.26.10: '>=10.26.10'
|
||||
qs@<6.14.1: '>=6.14.1'
|
||||
|
||||
Reference in New Issue
Block a user