Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 25 additions & 21 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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;\""]

# 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;'"]
Copy link
Preview

Copilot AI Jul 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Use consistent quoting in the CMD instruction to prevent potential shell interpretation issues; consider using double quotes uniformly.

Suggested change
CMD ["./env.sh && nginx -g 'daemon off;'"]
CMD ["./env.sh && nginx -g \"daemon off;\""]

Copilot uses AI. Check for mistakes.

6 changes: 6 additions & 0 deletions nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
2 changes: 1 addition & 1 deletion vite.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export default defineConfig(({ mode }) => {
svgrOptions: {},
}),
compression({
algorithm: 'gzip',
algorithm: 'brotliCompress',
}),
reactVirtualized(),
requireTransform(),
Expand Down