The codebase that powers boop.cat
boop.cat
1FROM node:22-bookworm AS builder-fe
2WORKDIR /app
3RUN corepack enable
4COPY package.json package-lock.json ./
5RUN npm ci
6COPY client ./client
7COPY package.json ./
8RUN npm run build
9
10FROM golang:1.23-bookworm AS builder-be
11WORKDIR /app
12COPY backend-go ./
13RUN go mod tidy
14RUN CGO_ENABLED=1 GOOS=linux go build -o boop-cat .
15
16FROM node:22-bookworm
17WORKDIR /app
18
19ENV BUN_INSTALL=/usr/local/bun
20ENV PATH=/usr/local/bun/bin:$PATH
21ENV DENO_INSTALL=/usr/local/deno
22ENV PATH=/usr/local/deno/bin:$PATH
23ENV NODE_ENV=production
24
25RUN apt-get update \
26 && apt-get install -y --no-install-recommends \
27 ca-certificates \
28 curl \
29 git \
30 bash \
31 unzip \
32 python3 \
33 make \
34 g++ \
35 && rm -rf /var/lib/apt/lists/*
36
37RUN corepack enable \
38 && corepack prepare pnpm@9.0.0 --activate \
39 && corepack prepare yarn@1.22.22 --activate
40
41RUN curl -fsSL https://bun.sh/install | bash \
42 && ln -sf /usr/local/bun/bin/bun /usr/local/bin/bun
43
44RUN curl -fsSL https://deno.land/install.sh | sh \
45 && ln -sf /usr/local/deno/bin/deno /usr/local/bin/deno
46
47COPY --from=builder-fe /app/client/dist /client/dist
48
49COPY --from=builder-be /app/boop-cat /app/boop-cat
50
51ENV PORT=8788
52EXPOSE 8788
53
54CMD ["/app/boop-cat"]