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 5 6USER root 7RUN mkdir -p /prod/web /prod/bot /prod/tapper && chown -R 1000:1000 /prod 8USER 1000 9 10ARG BUILD_DATE 11ARG SHA 12ARG VERSION 13ARG DID 14 15FROM base AS build 16COPY --chown=1000:1000 apps/bot /app 17COPY --chown=1000:1000 apps/tapper /app 18COPY --chown=1000:1000 apps/web /app 19 20COPY --chown=1000:1000 packages/common /app 21COPY --chown=1000:1000 packages/database /app 22COPY --chown=1000:1000 packages/tsconfig /app 23 24COPY --chown=1000:1000 package.json pnpm-lock.yaml pnpm-workspace.yaml /app/ 25WORKDIR /app 26 27RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile 28RUN pnpm run -r build 29RUN pnpm deploy --filter=./apps/web --prod /prod/web 30RUN pnpm deploy --filter=./apps/bot --prod /prod/bot 31RUN pnpm deploy --filter=./apps/tapper --prod /prod/tapper 32 33 34FROM base AS web 35COPY --from=build --chown=1000:1000 /prod/web /prod/web 36WORKDIR /prod/web 37EXPOSE 8002 38CMD ["node", "dist/index.js"] 39LABEL org.opencontainers.image.authors="Dane Miller 'me@dane.computer'" \ 40 org.opencontainers.image.source="https://tangled.org/${DID}/tealfmbot" \ 41 org.opencontainers.image.title="discostuweb" \ 42 org.opencontainers.image.description="The web service for authentication for the disco stu discord bot" \ 43 org.opencontainers.image.version=$VERSION \ 44 org.opencontainers.image.created=$BUILD_DATE \ 45 org.opencontainers.image.revision=$SHA \ 46 org.opencontainers.image.licenses="MIT" 47 48 49FROM base AS bot 50COPY --from=build --chown=1000:1000 /prod/bot /prod/bot 51WORKDIR /prod/bot 52CMD ["node", "dist/main.js"] 53LABEL org.opencontainers.image.authors="Dane Miller 'me@dane.computer'" \ 54 org.opencontainers.image.source="https://tangled.org/${DID}/tealfmbot" \ 55 org.opencontainers.image.title="discostubot" \ 56 org.opencontainers.image.description="A discord bot that displays your music listens based on your teal.fm records" \ 57 org.opencontainers.image.version=$VERSION \ 58 org.opencontainers.image.created=$BUILD_DATE \ 59 org.opencontainers.image.revision=$SHA \ 60 org.opencontainers.image.licenses="MIT" 61 62 63FROM base AS tapper 64COPY --from=build --chown=1000:1000 /prod/tapper /prod/tapper 65WORKDIR /prod/tapper 66CMD ["node", "dist/index.js"] 67LABEL org.opencontainers.image.authors="Dane Miller 'me@dane.computer'" \ 68 org.opencontainers.image.source="https://tangled.org/${DID}/tealfmbot" \ 69 org.opencontainers.image.title="discostutap" \ 70 org.opencontainers.image.description="The backfill and firehose listener for teal.fm records" \ 71 org.opencontainers.image.version=$VERSION \ 72 org.opencontainers.image.created=$BUILD_DATE \ 73 org.opencontainers.image.revision=$SHA \ 74 org.opencontainers.image.licenses="MIT"