perf: merge api + app packages to dedupe node_modules (#901)

aio: 3GB -> 2.2GB
app: 2.05GB -> 1.27GB

Ref: HDX-1803
This commit is contained in:
Warren 2025-06-02 13:53:45 -07:00 committed by GitHub
parent afe4c2da9c
commit ab3b5cb628
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 20 deletions

View file

@ -0,0 +1,7 @@
---
"@hyperdx/common-utils": patch
"@hyperdx/api": patch
"@hyperdx/app": patch
---
perf: merge api + app packages to dedupe node_modules

View file

@ -66,21 +66,16 @@ RUN npm install -g concurrently@9.1.0
USER node
# Set up API
WORKDIR /app/api
# Set up API and App
WORKDIR /app
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
# Set up App
WORKDIR /app/app
COPY --chown=node:node --from=builder /app/node_modules ./node_modules
COPY --chown=node:node --from=builder /app/packages/app/public ./public
COPY --chown=node:node --from=builder /app/packages/app/.next ./.next
# COPY --chown=node:node --from=builder /app/packages/app/node_modules ./packages/app/node_modules
COPY --from=builder /app/packages/app/next.config.js ./next.config.js
COPY --from=builder /app/packages/app/package.json ./package.json
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
# Set up start script
COPY --chown=node:node --from=hyperdx ./entry.prod.sh /etc/local/entry.sh
@ -123,11 +118,10 @@ RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.9/main' >> /etc/apk/repositori
ENV NODE_ENV production
# Set up App (copy from prod stage)
COPY --from=prod /app/api /app/api
COPY --from=prod /app/app /app/app
COPY --from=prod /app /app
COPY --from=hyperdx ./entry.local.base.sh /etc/local/entry.base.sh
WORKDIR /app/app
WORKDIR /app
# Add hosts entry in entrypoint script instead of here

View file

@ -61,9 +61,9 @@ opampsupervisor --config /etc/otel/supervisor.yaml > /var/log/otel-collector.log
npx concurrently \
"--kill-others" \
"--names=API,APP,ALERT-TASK" \
"PORT=${HYPERDX_API_PORT:-8000} HYPERDX_APP_PORT=${HYPERDX_APP_PORT:-8080} node -r /app/api/node_modules/@hyperdx/node-opentelemetry/build/src/tracing /app/api/packages/api/build/index.js" \
"HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} /app/app/node_modules/.bin/next start -p ${HYPERDX_APP_PORT:-8080}" \
"node -r /app/api/node_modules/@hyperdx/node-opentelemetry/build/src/tracing /app/api/packages/api/build/tasks/index.js check-alerts" \
"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}" \
"node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/tasks/index.js check-alerts" \
> /var/log/app.log 2>&1 &
echo ""

View file

@ -15,6 +15,6 @@ echo ""
npx concurrently \
"--kill-others" \
"--names=API,APP,ALERT-TASK" \
"PORT=${HYPERDX_API_PORT:-8000} HYPERDX_APP_PORT=${HYPERDX_APP_PORT:-8080} node -r /app/api/node_modules/@hyperdx/node-opentelemetry/build/src/tracing /app/api/packages/api/build/index.js" \
"HYPERDX_API_PORT=${HYPERDX_API_PORT:-8000} /app/app/node_modules/.bin/next start -p ${HYPERDX_APP_PORT:-8080}" \
"node -r /app/api/node_modules/@hyperdx/node-opentelemetry/build/src/tracing /app/api/packages/api/build/tasks/index.js check-alerts"
"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}" \
"node -r ./node_modules/@hyperdx/node-opentelemetry/build/src/tracing ./packages/api/build/tasks/index.js check-alerts"