Dockerfile.cloud
# CI builds Rust and both entrypoints once, before packaging this runtime image.
# Ubuntu 24.04 builds the native SDK (glibc 2.39); Trixie supplies glibc 2.41.
FROM node:24.18.1-trixie-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates git openssh-client \
&& rm -rf /var/lib/apt/lists/*
ENV NODE_ENV=production
WORKDIR /app
COPY dashboard/.output .output
COPY dashboard/node_modules node_modules
RUN ln -sfn /app/.output/server/node_modules/@ployz/sdk node_modules/@ployz/sdk \
&& touch .env \
&& node -p 'require("@ployz/sdk").ployzVersion()' > .ployz-version
COPY dashboard/package.json dashboard/drizzle.config.ts dashboard/drizzle.analytics.config.ts ./
COPY dashboard/drizzle/ drizzle/
COPY dashboard/scripts/check-schema.ts scripts/check-schema.ts
COPY dashboard/src/server/schema-compatibility.ts src/server/schema-compatibility.ts
CMD ["node", "--experimental-loader=@opentelemetry/instrumentation/hook.mjs", "--import", "@opentelemetry/auto-instrumentations-node/register", "--import", "./scripts/check-schema.ts", ".output/server/index.mjs"]