From 4d65c4e381da57eab0b8046f2efb50f6417d8ae0 Mon Sep 17 00:00:00 2001 From: SATYAsasini Date: Tue, 1 Jul 2025 17:14:49 +0530 Subject: [PATCH] fix: brotli static compression --- Dockerfile | 46 +++++++++++++++++++++++++--------------------- nginx.conf | 6 ++++++ vite.config.mts | 2 +- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index a67dfaf460..6e091b8c20 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,39 +1,43 @@ FROM node:20-alpine AS builder -RUN apk add --no-cache git - WORKDIR /app -COPY package.json . -COPY yarn.lock . +COPY package.json yarn.lock . + +RUN apk add --no-cache git RUN yarn install --frozen-lockfile --network-timeout 600000 -COPY src/ src -COPY nginx.conf . -COPY tsconfig.json . -COPY vite.config.mts . COPY . . -RUN echo `git rev-parse --short=9 HEAD` > health.html +RUN echo `git rev-parse --short HEAD` > health.html && \ + echo "" >> .env && \ + echo "SENTRY_RELEASE_VERSION=dashboard@$(git rev-parse --short HEAD)" >> .env && \ + yarn build -RUN echo "" >> .env && \ - echo "SENTRY_RELEASE_VERSION=dashboard@$(git rev-parse --short=9 HEAD)" >> .env +FROM fholzer/nginx-brotli:v1.26.2 -RUN yarn build +# Install bash +RUN apk add --no-cache bash shadow -FROM nginx:stable +RUN useradd -m -s /bin/bash devtron -RUN useradd -ms /bin/bash devtron COPY --from=builder /app/dist/ /usr/share/nginx/html COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./nginx-default.conf /etc/nginx/conf.d/default.conf + WORKDIR /usr/share/nginx/html -COPY --from=builder /app/./env.sh . -COPY --from=builder /app/.env . -COPY --from=builder /app/health.html . -RUN chown -R devtron:devtron /usr/share/nginx/html -# Make our shell script executable -RUN chmod +x env.sh + +COPY --from=builder /app/env.sh . +COPY --from=builder /app/.env . +COPY --from=builder /app/health.html . + +RUN chown -R devtron:devtron /usr/share/nginx/html && \ + chmod +x env.sh + USER devtron -CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""] \ No newline at end of file + +# Override the default ENTRYPOINT to allow shell scripting as fholzer/nginx-brotli has by-default entrypoint of nginx +ENTRYPOINT ["/bin/bash", "-c"] + +CMD ["./env.sh && nginx -g 'daemon off;'"] \ No newline at end of file diff --git a/nginx.conf b/nginx.conf index 2394cf72f2..b938f3c300 100644 --- a/nginx.conf +++ b/nginx.conf @@ -28,5 +28,11 @@ http { gzip_comp_level 6; gzip_static on; + # brotli compression + brotli off; + brotli_comp_level 6; + brotli_static on; # enabling this will ensure to serve pre-compressed file only + brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml; + include /etc/nginx/conf.d/*.conf; } \ No newline at end of file diff --git a/vite.config.mts b/vite.config.mts index 1a84f4ae4c..a49040ef4a 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -184,7 +184,7 @@ export default defineConfig(({ mode }) => { svgrOptions: {}, }), compression({ - algorithm: 'gzip', + algorithm: 'brotliCompress', }), reactVirtualized(), requireTransform(),