From f82389225c948c12b3dc7d606c9d26e46bd3699e Mon Sep 17 00:00:00 2001 From: Adam French Date: Tue, 10 Mar 2026 12:07:13 +0000 Subject: [PATCH] Changes to docker configuration to decrease build time --- nginx/Dockerfile | 33 ++++++++++----------------------- nginx/vue/vite.config.js | 6 +++++- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/nginx/Dockerfile b/nginx/Dockerfile index 45c71b0..79cafdd 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -1,33 +1,20 @@ -FROM nginx:latest -RUN rm -rf /etc/nginx/html/* - -# Install dependencies needed to add NodeSource repo -RUN apt-get update && apt-get install -y \ - curl \ - build-essential \ - git \ - gettext-base \ - && rm -rf /var/lib/apt/lists/* - -# Install Node.js LTS + npm -RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm@latest - - +# Stage 1: Build Vue app +FROM node:22-slim AS build WORKDIR /app +COPY vue/package.json vue/package-lock.json ./ +RUN npm ci COPY vue/ ./ -RUN npm install RUN npm run build - -RUN mkdir -p /etc/nginx/html \ - && cp -r ./dist/* /etc/nginx/html/ - +# Stage 2: Serve with nginx +FROM nginx:latest +RUN rm -rf /etc/nginx/html/* && \ + apt-get update && apt-get install -y gettext-base && \ + rm -rf /var/lib/apt/lists/* +COPY --from=build /app/dist /etc/nginx/html/ COPY nginx.conf.template /etc/nginx/nginx.conf.template COPY nginx_setup.conf.template /etc/nginx/nginx_setup.conf.template COPY nginx_dev.conf.template /etc/nginx/nginx_dev.conf.template COPY robots.txt /etc/nginx/html/robots.txt COPY entrypoint.sh /entrypoint.sh - ENTRYPOINT ["/entrypoint.sh"] diff --git a/nginx/vue/vite.config.js b/nginx/vue/vite.config.js index 26d7634..a7c5b26 100644 --- a/nginx/vue/vite.config.js +++ b/nginx/vue/vite.config.js @@ -7,7 +7,11 @@ import vueDevTools from "vite-plugin-vue-devtools"; // https://vite.dev/config/ export default defineConfig({ - plugins: [vue(), vueDevTools(), tailwindcss()], + plugins: [ + vue(), + ...(process.env.NODE_ENV !== "production" ? [vueDevTools()] : []), + tailwindcss(), + ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)),