Skip to content

perf: build next app in standalone mode to cut down images size #916

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 9, 2025
Merged
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
7 changes: 7 additions & 0 deletions .changeset/seven-taxis-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@hyperdx/common-utils": patch
"@hyperdx/api": patch
"@hyperdx/app": patch
---

perf: build next app in standalone mode to cut down images size
11 changes: 5 additions & 6 deletions docker/hyperdx/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ COPY --from=app ./styles ./packages/app/styles
COPY --from=app ./types ./packages/app/types

ENV NEXT_TELEMETRY_DISABLED 1
ENV NEXT_OUTPUT_STANDALONE false
ENV NEXT_OUTPUT_STANDALONE true
ENV NEXT_PUBLIC_IS_LOCAL_MODE false
RUN npx nx run-many --target=build --projects=@hyperdx/common-utils,@hyperdx/api,@hyperdx/app
RUN rm -rf node_modules && yarn workspaces focus @hyperdx/api @hyperdx/app --production
RUN rm -rf node_modules && yarn workspaces focus @hyperdx/api --production


# prod ############################################################################################
Expand All @@ -73,10 +73,9 @@ COPY --chown=node:node --from=builder /app/node_modules ./node_modules
COPY --chown=node:node --from=builder /app/packages/api/build ./packages/api/build
COPY --chown=node:node --from=builder /app/packages/common-utils/dist ./packages/common-utils/dist
COPY --chown=node:node --from=node_base /app/packages/common-utils/node_modules ./packages/common-utils/node_modules
COPY --chown=node:node --from=builder /app/packages/app/public ./packages/app/public
COPY --chown=node:node --from=builder /app/packages/app/.next ./packages/app/.next
COPY --from=builder /app/packages/app/next.config.js ./packages/app/next.config.js
COPY --from=builder /app/packages/app/package.json ./packages/app/package.json
COPY --chown=node:node --from=builder /app/packages/app/.next/standalone ./packages/app
COPY --chown=node:node --from=builder /app/packages/app/.next/static ./packages/app/packages/app/.next/static
COPY --chown=node:node --from=builder /app/packages/app/public ./packages/app/packages/app/public

# Set up start script
COPY --chown=node:node --from=hyperdx ./entry.prod.sh /etc/local/entry.sh
Expand Down
2 changes: 1 addition & 1 deletion docker/hyperdx/entry.local.base.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ npx concurrently \
"--kill-others" \
"--names=API,APP,ALERT-TASK" \
"PORT=${HYPERDX_API_PORT:-8000} HYPERDX_APP_PORT=${HYPERDX_APP_PORT:-8080} node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/index.js" \
"cd ./packages/app && HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} ../../node_modules/.bin/next start -p ${HYPERDX_APP_PORT:-8080}" \
"cd ./packages/app/packages/app && HOSTNAME='0.0.0.0' HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} PORT=${HYPERDX_APP_PORT:-8080} node server.js" \
"node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/tasks/index.js check-alerts" \
> /var/log/app.log 2>&1 &

Expand Down
2 changes: 1 addition & 1 deletion docker/hyperdx/entry.prod.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ npx concurrently \
"--kill-others" \
"--names=API,APP,ALERT-TASK" \
"PORT=${HYPERDX_API_PORT:-8000} HYPERDX_APP_PORT=${HYPERDX_APP_PORT:-8080} node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/index.js" \
"cd ./packages/app && HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} ../../node_modules/.bin/next start -p ${HYPERDX_APP_PORT:-8080}" \
"cd ./packages/app/packages/app && HOSTNAME='0.0.0.0' HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} PORT=${HYPERDX_APP_PORT:-8080} node server.js" \
"node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/tasks/index.js check-alerts"