-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathDockerfile.railway
More file actions
116 lines (101 loc) · 3.57 KB
/
Dockerfile.railway
File metadata and controls
116 lines (101 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Use Node.js 20 as the base image
FROM node:20-alpine
# Set working directory
WORKDIR /app
# Install pnpm globally
RUN npm install -g pnpm
# Declare build arguments for environment variables needed during build
ARG DATABASE_URL
ARG STRIPE_SECRET_KEY
ARG STRIPE_PUBLISHABLE_KEY
ARG STRIPE_WEBHOOK_SECRET
ARG ECHO_CONTROL_APP_BASE_URL
ARG API_KEY_PREFIX
ARG NODE_ENV
ARG ANTHROPIC_API_KEY
ARG OPENAI_API_KEY
ARG ECHO_API_KEY
ARG ECHO_BASE_URL
ARG WEBHOOK_URL
ARG OTEL_EXPORTER_OTLP_ENDPOINT
ARG OTEL_EXPORTER_OTLP_HEADERS
ARG OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
ARG OTEL_EXPORTER_OTLP_TRACES_HEADERS
ARG OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
ARG OTEL_EXPORTER_OTLP_METRICS_HEADERS
ARG OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
ARG OTEL_SERVICE_NAME
ARG OTEL_SERVICE_VERSION
ARG OTEL_NODE_RESOURCE_DETECTORS
ARG OTEL_TRACES_EXPORTER
ARG OTEL_LOG_LEVEL
ARG PORT
ARG AUTH_RESEND_KEY
# Set environment variables from build arguments
ENV DATABASE_URL=$DATABASE_URL
ENV STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
ENV STRIPE_PUBLISHABLE_KEY=$STRIPE_PUBLISHABLE_KEY
ENV STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET
ENV ECHO_CONTROL_APP_BASE_URL=$ECHO_CONTROL_APP_BASE_URL
ENV API_KEY_PREFIX=$API_KEY_PREFIX
ENV NODE_ENV=$NODE_ENV
ENV ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY
ENV OPENAI_API_KEY=$OPENAI_API_KEY
ENV ECHO_API_KEY=$ECHO_API_KEY
ENV ECHO_BASE_URL=$ECHO_BASE_URL
ENV WEBHOOK_URL=$WEBHOOK_URL
ENV OTEL_EXPORTER_OTLP_ENDPOINT=$OTEL_EXPORTER_OTLP_ENDPOINT
ENV OTEL_EXPORTER_OTLP_HEADERS=$OTEL_EXPORTER_OTLP_HEADERS
ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=$OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
ENV OTEL_EXPORTER_OTLP_TRACES_HEADERS=$OTEL_EXPORTER_OTLP_TRACES_HEADERS
ENV OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=$OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
ENV OTEL_EXPORTER_OTLP_METRICS_HEADERS=$OTEL_EXPORTER_OTLP_METRICS_HEADERS
ENV OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=$OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
ENV OTEL_SERVICE_NAME=$OTEL_SERVICE_NAME
ENV OTEL_SERVICE_VERSION=$OTEL_SERVICE_VERSION
ENV OTEL_NODE_RESOURCE_DETECTORS=$OTEL_NODE_RESOURCE_DETECTORS
ENV OTEL_TRACES_EXPORTER=$OTEL_TRACES_EXPORTER
ENV OTEL_LOG_LEVEL=$OTEL_LOG_LEVEL
ENV PORT=$PORT
ENV AUTH_RESEND_KEY=$AUTH_RESEND_KEY
# Install system dependencies
RUN apk add --no-cache \
bash \
git \
openssh-client
# Copy pnpm workspace and lock files for dependency installation
COPY pnpm-lock.yaml ./
COPY pnpm-workspace.yaml ./
COPY package.json ./
COPY tsconfig.base.json ./
COPY turbo.json ./
# Copy all project files first
COPY packages/app/control/ ./packages/app/control/
COPY packages/app/server/ ./packages/app/server/
COPY packages/sdk/ts/ ./packages/sdk/ts/
COPY packages/sdk/next/ ./packages/sdk/next/
COPY packages/sdk/react/ ./packages/sdk/react/
# we are now also copy the examples because pnpm install needs it
COPY packages/sdk/examples/next/ ./packages/sdk/examples/next/
COPY packages/sdk/examples/vite/ ./packages/sdk/examples/vite/
COPY packages/sdk/component-registry/ ./packages/sdk/component-registry/
# Install all workspace dependencies
WORKDIR /app
RUN pnpm install
# Build SDK first to ensure latest version is used
WORKDIR /app
RUN pnpm exec turbo run build --filter=@merit-systems/echo-typescript-sdk
# Build only what's needed for the server
WORKDIR /app
RUN SKIP_ENV_VALIDATION=true pnpm exec turbo run build --filter=echo-server
# Generate Prisma client and copy schema for server
WORKDIR /app/packages/app/control
RUN pnpm run prisma:generate
WORKDIR /app/packages/app/server
RUN pnpm run copy-prisma
# Step 4: Install production dependencies only
RUN pnpm install --prod
# Expose the port that echo-server runs on
EXPOSE 3069
# Step 5: Start the server
CMD ["pnpm", "start"]