-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
113 lines (89 loc) · 2.8 KB
/
Dockerfile
File metadata and controls
113 lines (89 loc) · 2.8 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
# base node image
FROM node:22-bookworm-slim AS base
# install openssl and sqlite3 for prisma
RUN apt-get update && apt-get install -y ca-certificates openssl sqlite3
# install all node_modules, including dev
FROM base AS deps
RUN mkdir /app/
WORKDIR /app/
ADD package.json package-lock.json ./
RUN npm install --legacy-peer-deps
# setup production node_modules
FROM base AS production-deps
RUN mkdir /app/
WORKDIR /app/
COPY --from=deps /app/node_modules /app/node_modules
ADD package.json package-lock.json ./
RUN npm prune --omit=dev --legacy-peer-deps
# build app
FROM base AS build
RUN mkdir /app/
WORKDIR /app/
ARG TURSO_AUTH_TOKEN
ARG TURSO_DATABASE_URL
ARG SESSION_SECRET
ARG ADMIN_PASSWORD
ARG POLAR_ACCESS_TOKEN
ARG POLAR_WEBHOOK_SECRET
ARG POLAR_ORGANIZATION_ID
ARG ANTHROPIC_API_KEY
ARG VOYAGE_API_KEY
ARG UPSTASH_VECTOR_REST_URL
ARG UPSTASH_VECTOR_REST_TOKEN
ARG BUNNY_STORAGE_ZONE
ARG BUNNY_ACCESS_KEY
ARG BUNNY_LIBRARY_ID
ARG GITHUB_CLIENT_ID
ARG GITHUB_CLIENT_SECRET
ARG GITHUB_REDIRECT_URI
ARG RESEND_API_KEY
ARG RESEND_AUDIENCE_ID
ARG SANITY_STUDIO_PROJECT_ID
ARG SANITY_STUDIO_DATASET
ARG DISCORD_BOT_TOKEN
ARG DISCORD_GUILD_ID
ARG LOCAL_DB_URL
COPY --from=deps /app/node_modules /app/node_modules
# schema doesn't change much so these will stay cached
ADD prisma /app/prisma
RUN npx prisma generate --schema=./prisma/schema
# app code changes all the time
ADD . .
ENV TURSO_AUTH_TOKEN=$TURSO_AUTH_TOKEN
ENV TURSO_DATABASE_URL=$TURSO_DATABASE_URL
ENV SESSION_SECRET=$SESSION_SECRET
ENV ADMIN_PASSWORD=$ADMIN_PASSWORD
ENV POLAR_ACCESS_TOKEN=$POLAR_ACCESS_TOKEN
ENV POLAR_WEBHOOK_SECRET=$POLAR_WEBHOOK_SECRET
ENV POLAR_ORGANIZATION_ID=$POLAR_ORGANIZATION_ID
ENV ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY
ENV VOYAGE_API_KEY=$VOYAGE_API_KEY
ENV UPSTASH_VECTOR_REST_URL=$UPSTASH_VECTOR_REST_URL
ENV UPSTASH_VECTOR_REST_TOKEN=$UPSTASH_VECTOR_REST_TOKEN
ENV BUNNY_STORAGE_ZONE=$BUNNY_STORAGE_ZONE
ENV BUNNY_ACCESS_KEY=$BUNNY_ACCESS_KEY
ENV BUNNY_LIBRARY_ID=$BUNNY_LIBRARY_ID
ENV GITHUB_CLIENT_ID=$GITHUB_CLIENT_ID
ENV GITHUB_CLIENT_SECRET=$GITHUB_CLIENT_SECRET
ENV GITHUB_REDIRECT_URI=$GITHUB_REDIRECT_URI
ENV RESEND_API_KEY=$RESEND_API_KEY
ENV RESEND_AUDIENCE_ID=$RESEND_AUDIENCE_ID
ENV SANITY_STUDIO_PROJECT_ID=$SANITY_STUDIO_PROJECT_ID
ENV SANITY_STUDIO_DATASET=$SANITY_STUDIO_DATASET
ENV DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN
ENV DISCORD_GUILD_ID=$DISCORD_GUILD_ID
ENV DATABASE_URL=$DATABASE_URL
RUN npm run build
# build smaller image for running
FROM base
ENV PORT="8080"
ENV NODE_ENV="production"
RUN mkdir /app/
WORKDIR /app/
# Create a directory for the SQLite database with appropriate permissions
# RUN mkdir -p /data && chmod 755 /data
COPY --from=production-deps /app/node_modules /app/node_modules
COPY --from=build /app/build /app/build
ADD . .
RUN npx prisma generate --schema=./prisma/schema
CMD ["npm", "run", "start"]