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