Aethel Bot OSS repository! aethel.xyz
bot fun ai discord discord-bot aethel
at main 2.1 kB view raw
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"]