65da20c225
* WIP clickhouse package with test containers setup * More clickhouse client setup now with otel and real tests, and the v1 of raw run events * Add some additional columns to raw_run_events_v1 * WIP runs dashboard service * Create a new run engine event bus event for the runs dashboard to hook into * Track run events in the run engine * make sure engine v1 runs get synced to CH * Update the attemptNumber of v3 task runs * Restructure the run events to be more sparse * emit more stuff * Setup replication package * scaffold the replication package * replication wip * resolve conflicts * more replication stuff * Add ability to drop the replication slot completely on teardown * Use the new single replacingmergetree task events table for replication * get it working * insert payloads into their own table only on insert and then join * prepare for using clickhouse cloud and now running ch migrations during boot in the entrypoint.sh * Handover WIP and tests * Testing the replication service * Remove the runs dashboard stuff that we aren't using anymore * Added a test for large payloads * hacky typecheck fix * Fix new internal package typecheck issues and start adding telemetry to the replication service * tracing over spans, some other improvements * Improvements to the runs replication service, now ready for testing * Some fixes and cleanups * Don't need this code anymore * move transaction types into the runs replication service * only send spans where there are transaction events * A couple of suggested tweaks
89 lines
3.5 KiB
Docker
89 lines
3.5 KiB
Docker
ARG NODE_IMAGE=node:20.11.1-bullseye-slim@sha256:5a5a92b3a8d392691c983719dbdc65d9f30085d6dcd65376e7a32e6fe9bf4cbe
|
|
|
|
FROM golang:1.23-alpine AS goose_builder
|
|
RUN go install github.com/pressly/goose/v3/cmd/goose@latest
|
|
|
|
FROM ${NODE_IMAGE} AS pruner
|
|
|
|
WORKDIR /triggerdotdev
|
|
|
|
COPY --chown=node:node . .
|
|
RUN npx -q turbo@1.10.9 prune --scope=webapp --docker
|
|
RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
|
|
|
|
# Base strategy to have layer caching
|
|
FROM ${NODE_IMAGE} AS base
|
|
RUN apt-get update && apt-get install -y openssl dumb-init
|
|
WORKDIR /triggerdotdev
|
|
COPY --chown=node:node .gitignore .gitignore
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/out/json/ .
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/out/pnpm-lock.yaml ./pnpm-lock.yaml
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
|
|
|
|
## Dev deps
|
|
FROM base AS dev-deps
|
|
WORKDIR /triggerdotdev
|
|
# Corepack is used to install pnpm
|
|
RUN corepack enable
|
|
ENV NODE_ENV development
|
|
RUN pnpm install --ignore-scripts --no-frozen-lockfile
|
|
|
|
## Production deps
|
|
FROM base AS production-deps
|
|
WORKDIR /triggerdotdev
|
|
# Corepack is used to install pnpm
|
|
RUN corepack enable
|
|
ENV NODE_ENV production
|
|
RUN pnpm install --prod --no-frozen-lockfile
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/internal-packages/database/prisma/schema.prisma /triggerdotdev/internal-packages/database/prisma/schema.prisma
|
|
# RUN pnpm add @prisma/client@5.1.1 -w
|
|
ENV NPM_CONFIG_IGNORE_WORKSPACE_ROOT_CHECK true
|
|
RUN pnpx prisma@5.4.1 generate --schema /triggerdotdev/internal-packages/database/prisma/schema.prisma
|
|
|
|
## Builder (builds the webapp)
|
|
FROM base AS builder
|
|
WORKDIR /triggerdotdev
|
|
# Corepack is used to install pnpm
|
|
RUN corepack enable
|
|
|
|
# Goose and schemas
|
|
COPY --from=goose_builder /go/bin/goose /usr/local/bin/goose
|
|
RUN chmod +x /usr/local/bin/goose
|
|
COPY --chown=node:node internal-packages/clickhouse/schema /triggerdotdev/internal-packages/clickhouse/schema
|
|
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/out/full/ .
|
|
COPY --from=dev-deps --chown=node:node /triggerdotdev/ .
|
|
COPY --chown=node:node turbo.json turbo.json
|
|
COPY --chown=node:node docker/scripts ./scripts
|
|
RUN chmod +x ./scripts/wait-for-it.sh
|
|
RUN chmod +x ./scripts/entrypoint.sh
|
|
COPY --chown=node:node .configs/tsconfig.base.json .configs/tsconfig.base.json
|
|
COPY --chown=node:node scripts/updateVersion.ts scripts/updateVersion.ts
|
|
RUN pnpm run generate
|
|
RUN pnpm run build --filter=webapp...
|
|
|
|
# Runner
|
|
FROM ${NODE_IMAGE} AS runner
|
|
RUN apt-get update && apt-get install -y openssl netcat-openbsd ca-certificates
|
|
WORKDIR /triggerdotdev
|
|
RUN corepack enable
|
|
ENV NODE_ENV production
|
|
|
|
COPY --from=base /usr/bin/dumb-init /usr/bin/dumb-init
|
|
COPY --from=pruner --chown=node:node /triggerdotdev/out/full/ .
|
|
COPY --from=production-deps --chown=node:node /triggerdotdev .
|
|
COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/build/server.js ./apps/webapp/build/server.js
|
|
COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/build ./apps/webapp/build
|
|
COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/public ./apps/webapp/public
|
|
COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/prisma/seed.js ./apps/webapp/prisma/seed.js
|
|
COPY --from=builder --chown=node:node /triggerdotdev/scripts ./scripts
|
|
|
|
# Goose and schemas
|
|
COPY --from=builder /usr/local/bin/goose /usr/local/bin/goose
|
|
COPY --from=builder --chown=node:node /triggerdotdev/internal-packages/clickhouse/schema /triggerdotdev/internal-packages/clickhouse/schema
|
|
|
|
EXPOSE 3000
|
|
|
|
USER node
|
|
CMD ["./scripts/entrypoint.sh"]
|