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