From e75883e587700d8d37e36cd420067c73882f2c05 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Sat, 30 Aug 2025 09:14:19 -0500 Subject: [PATCH] test(docker): more testing on how i want to build the docker part of the app --- Dockerfile | 48 ++++++++++++++++++++++++++++++++++-------------- package.json | 3 +++ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 660d1c4..46fe22d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,49 @@ -# Install dependencies -FROM node:24-alpine AS deps +# Stage 1: Build the Express.js app +FROM node:24-alpine AS app-builder WORKDIR /app COPY package*.json ./ +COPY app ./app RUN npm install +RUN npm run build:app -# Build app -FROM node:24-alpine AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules -COPY . . +#-------------------- + +# Stage 2: Build the Docusaurus docs +FROM node:24-alpine AS docs-builder +WORKDIR /app/lstDocs +COPY lstDocs/package*.json ./ +COPY --from=app-builder /app/node_modules /app/node_modules +COPY lstDocs ./ +RUN npm install RUN npm run build -# Production image +#-------------------- + +# Stage 3: Build the Vite frontend +FROM node:24-alpine AS front-builder +WORKDIR /app/frontend +COPY frontend/package*.json ./ +COPY --from=app-builder /app/node_modules /app/node_modules +COPY frontend ./ +RUN npm install +RUN npm run build + +#-------------------- + +# Stage 4: Create the final production image FROM node:24-alpine AS runner WORKDIR /app +ENV NODE_ENV=production +ENV RUNNING_IN_DOCKER=true -# Install only prod deps +# Copy production dependencies for the main app COPY package*.json ./ RUN npm install --omit=dev --ignore-scripts -# Copy compiled app -COPY --from=builder /app/dist ./dist +# Copy the built artifacts from each builder stage +COPY --from=app-builder /app/dist ./dist +COPY --from=docs-builder /app/lstDocs/build ./lstDocs/build +COPY --from=front-builder /app/frontend/dist ./frontend/dist EXPOSE 4200 -ENV NODE_ENV=dev -ENV RUNNING_IN_DOCKER=true - CMD ["node", "dist/main.js"] \ No newline at end of file diff --git a/package.json b/package.json index 359dfe2..dcb07d9 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,9 @@ "build:docs": "cd lstDocs && rimraf build && npm run build", "build:wrapper": "cd lstWrapper && rimraf publish && dotnet publish -c Release -o ./publish", "build": "npm run build:docs && npm run build:front && npm run build:app", + "install:front": "cd frontend && npm i", + "install:doc": "cd lstDocs && npm i", + "install:app": "npm i", "start:app": "set NODE_ENV=production && node dist/main.js", "start": "dotenvx run -f .env -- npm run start:app", "docker": "docker build --no-cache -t lst-test .",