Aethel Bot OSS repository!
aethel.xyz
bot
fun
ai
discord
discord-bot
aethel
1FROM oven/bun:latest AS builder
2
3ARG SOURCE_COMMIT
4ARG VITE_BOT_API_URL
5ARG VITE_STATUS_API_KEY
6ARG STATUS_API_KEY
7
8ENV SOURCE_COMMIT=${SOURCE_COMMIT}
9ENV NODE_ENV=production
10ENV VITE_BOT_API_URL=${VITE_BOT_API_URL}
11ENV VITE_STATUS_API_KEY=${VITE_STATUS_API_KEY}
12ENV STATUS_API_KEY=${STATUS_API_KEY}
13
14WORKDIR /app
15
16
17RUN apt-get update && apt-get install -y git fonts-dejavu-core fontconfig && rm -rf /var/lib/apt/lists/*
18COPY package.json bun.lock ./
19RUN bun install --frozen-lockfile
20
21COPY src ./src
22COPY scripts ./scripts
23COPY locales ./locales
24COPY migrations ./migrations
25COPY tsconfig.json ./
26COPY .env* ./
27
28RUN bun run build
29
30WORKDIR /app/web
31
32COPY web/package.json web/bun.lock ./
33RUN bun install --frozen-lockfile
34
35COPY web/src ./src
36COPY web/public ./public
37COPY web/index.html ./
38COPY web/vite.config.ts ./
39COPY web/tsconfig.json ./
40COPY web/tsconfig.node.json ./
41COPY web/tailwind.config.js ./
42COPY web/postcss.config.js ./
43
44RUN bun run build
45
46FROM oven/bun:1 AS production
47
48ARG SOURCE_COMMIT
49ARG VITE_BOT_API_URL
50ARG VITE_STATUS_API_KEY
51
52ENV SOURCE_COMMIT=${SOURCE_COMMIT}
53ENV NODE_ENV=production
54ENV VITE_BOT_API_URL=${VITE_BOT_API_URL}
55ENV STATUS_API_KEY=${STATUS_API_KEY}
56ENV VITE_STATUS_API_KEY=${VITE_STATUS_API_KEY}
57
58RUN apt-get update && apt-get install -y curl git fonts-dejavu-core fontconfig && rm -rf /var/lib/apt/lists/* && \
59 groupadd -g 1001 nodejs && \
60 useradd -r -u 1001 -g nodejs aethel
61
62WORKDIR /app
63
64
65
66COPY package.json bun.lock ./
67COPY .env* ./
68
69RUN bun install --frozen-lockfile --production
70
71COPY --from=builder --chown=aethel:nodejs /app/dist ./dist
72COPY --from=builder --chown=aethel:nodejs /app/locales ./locales
73COPY --from=builder --chown=aethel:nodejs /app/migrations ./migrations
74COPY --from=builder --chown=aethel:nodejs /app/scripts ./scripts
75COPY --from=builder --chown=aethel:nodejs /app/web/dist ./web/dist
76
77RUN mkdir -p /app/logs && chown aethel:nodejs /app/logs
78
79USER aethel
80
81EXPOSE 2020
82
83HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
84 CMD curl -f http://localhost:2020/health || exit 1
85
86CMD ["bun", "run", "start"]