Christmas cookie ranking site
1FROM node:22.14.0 AS source
2WORKDIR /app/
3COPY ./package.json ./package-lock.json ./svelte.config.js .
4RUN npm ci
5COPY tsconfig.json ./
6COPY ./src/ ./src/
7RUN npx svelte-kit sync
8CMD ["false"]
9
10
11FROM source AS load
12CMD ["npx", "tsx", "./src/scripts/load-cookies.ts", "/load/cookies.toml"]
13
14
15FROM source AS migrate
16COPY ./.gmrc .gmrc
17COPY ./migrations/committed/ ./migrations/committed/
18ENV CI=true
19CMD ["npx", "graphile-migrate", "migrate"]
20
21
22FROM source AS build
23WORKDIR /app/
24COPY ./vite.config.ts ./
25COPY ./static/ ./static/
26ENV ENV=production
27RUN npm run build
28
29
30FROM node:22.14.0 AS release
31WORKDIR /app/
32
33ENV NODE_ENV=production
34COPY ./package.json ./package-lock.json .
35RUN npm ci
36COPY --from=build /app/build/ ./
37
38ENV PORT=3000
39EXPOSE $PORT
40
41CMD ["node", "index.js"]