A discord bot for teal.fm
discord tealfm music
1FROM node:24-alpine AS base 2ENV PNPM_HOME="/pnpm" 3ENV PATH="$PNPM_HOME:$PATH" 4RUN corepack enable 5USER 1000 6 7ARG BUILD_DATE 8ARG SHA 9 10FROM base AS build 11COPY --chown=1000:1000 /apps/bot /app 12COPY --chown=1000:1000 /apps/tapper /app 13COPY --chown=1000:1000 /apps/web /app 14 15COPY --chown=1000:1000 /packages/common /app 16COPY --chown=1000:1000 /packages/database /app 17COPY --chown=1000:1000 /packages/tsconfig /app 18 19COPY --chown=1000:1000 package.json pnpm-lock.yaml pnpm-workspace.yaml /app/ 20WORKDIR /app 21 22RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile \ 23 pnpm run -r build \ 24 pnpm deploy --filter=./apps/web --prod /prod/web \ 25 pnpm deploy --filter=./apps/bot --prod /prod/bot \ 26 pnpm deploy --filter=./apps/tapper --prod /prod/tapper 27 28 29FROM base AS web 30COPY --from=build --chown=1000:1000 /prod/web /prod/web 31WORKDIR /prod/web 32EXPOSE 8002 33CMD ["node", "dist/index.js"] 34 35FROM base AS bot 36COPY --from=build --chown=1000:1000 /prod/bot /prod/bot 37WORKDIR /prod/bot 38CMD ["node", "dist/main.js"] 39 40FROM base AS tapper 41COPY --from=build --chown=1000:1000 /prod/tapper /prod/tapper 42WORKDIR /prod/tapper 43CMD ["node", "dist/index.js"] 44 45LABEL org.opencontainers.image.authors="Dane Miller <me@dane.computer>" \ 46 org.opencontainers.image.source="https://tangled.org/dane.is.extraordinarily.cool/tealfmbot" \ 47 org.opencontainers.image.title="discostu" \ 48 org.opencontainers.image.description="A discord bot that displays your music listens based on your teal.fm records" \ 49 org.opencontainers.image.created=$BUILD_DATE \ 50 org.opencontainers.image.revision=$SHA \ 51 org.opencontainers.image.licenses="MIT"