FROM node:20.19.1-slim AS builder

WORKDIR /app/builder

COPY package*.json .
COPY packages/shared-dtos/package*.json ./packages/shared-dtos/
COPY data-hub/data-connector/package*.json ./data-hub/data-connector/

RUN npm ci --verbose

COPY packages/shared-dtos ./packages/shared-dtos/
COPY data-hub/data-connector ./data-hub/data-connector/

WORKDIR /app/builder/data-hub/data-connector

RUN npm run build

FROM node:20.15.1-alpine

# ENV OTEL_TRACES_EXPORTER="otlp"
# ENV OTEL_METRICS_EXPORTER="otlp"
# ENV OTEL_LOGS_EXPORTER="otlp"
# ENV NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"

# To setup your own Service Instance ID
# ENV OTEL_RESOURCE_ATTRIBUTES="service.instance.id=avicenna.data-connector"
# ENV OTEL_NODE_RESOURCE_DETECTORS="env,host,os"

# To have a Service Instance ID generated using a random UUID
# Requires auto-instrumentations-node version 0.46.0+
# ENV OTEL_NODE_RESOURCE_DETECTORS="env,host,os,serviceinstance,container"

WORKDIR /app

COPY --from=builder /app/builder/node_modules ./node_modules
COPY --from=builder /app/builder/packages ./packages
COPY --from=builder /app/builder/data-hub/data-connector/prisma ./prisma
COPY --from=builder /app/builder/data-hub/data-connector/dist ./dist
COPY --from=builder /app/builder/data-hub/data-connector/docker-entrypoint.sh .

ENTRYPOINT [ "./docker-entrypoint.sh" ]

CMD ["node", "./dist/src/main.js" ]