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