A discord bot for teal.fm
discord tealfm music

a bunch of dockerfile changes

besaid.zone e79046c7 e35e63eb

verified
+2
.dockerignore
··· 6 **/dist 7 .pnpm-store 8 .DS_Store
··· 6 **/dist 7 .pnpm-store 8 .DS_Store 9 + .env 10 + .env.*
+21
.tangled/workflows/docker.yml
···
··· 1 + when: 2 + - event: ["push"] 3 + branch: main 4 + # tag: ["v*"] 5 + 6 + engine: nixery 7 + 8 + dependencies: 9 + nixpkgs: 10 + - docker 11 + 12 + steps: 13 + - name: build 14 + command: | 15 + VCS_REF=$(git rev-parse HEAD) 16 + BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) 17 + VERSION=$(git describe --tags --abbrev=0) 18 + 19 + echo $VCS_REF 20 + echo $BUILD_DATE 21 + echo $VERSION
+35 -13
Dockerfile
··· 1 FROM node:24-alpine AS base 2 ENV PNPM_HOME="/pnpm" 3 ENV PATH="$PNPM_HOME:$PATH" 4 - ENV NODE_ENV=production 5 RUN corepack enable 6 7 FROM base AS build 8 - COPY . /app 9 WORKDIR /app 10 11 - RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile 12 - RUN pnpm run -r build 13 - RUN pnpm deploy --filter=./apps/web --prod /prod/web 14 - RUN pnpm deploy --filter=./apps/bot --prod /prod/bot 15 - RUN pnpm deploy --filter=./apps/tapper --prod /prod/tapper 16 17 FROM base AS web 18 - COPY --from=build /prod/web /prod/web 19 WORKDIR /prod/web 20 EXPOSE 8002 21 - CMD ["pnpm", "start"] 22 23 FROM base AS bot 24 - COPY --from=build /prod/bot /prod/bot 25 WORKDIR /prod/bot 26 - CMD ["pnpm", "start"] 27 28 FROM base AS tapper 29 - COPY --from=build /prod/tapper /prod/tapper 30 WORKDIR /prod/tapper 31 - CMD ["pnpm", "start"]
··· 1 FROM node:24-alpine AS base 2 ENV PNPM_HOME="/pnpm" 3 ENV PATH="$PNPM_HOME:$PATH" 4 RUN corepack enable 5 + USER 1000 6 + 7 + ARG VERSION 8 + ARG BUILD_DATE 9 + ARG SHA 10 11 FROM base AS build 12 + COPY --chown=1000:1000 /apps/bot /app 13 + COPY --chown=1000:1000 /apps/tapper /app 14 + COPY --chown=1000:1000 /apps/web /app 15 + 16 + COPY --chown=1000:1000 /packages/common /app 17 + COPY --chown=1000:1000 /packages/database /app 18 + COPY --chown=1000:1000 /packages/tsconfig /app 19 + 20 + COPY --chown=1000:1000 package.json pnpm-lock.yaml pnpm-workspace.yaml /app/ 21 WORKDIR /app 22 23 + RUN --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 30 FROM base AS web 31 + COPY --from=build --chown=1000:1000 /prod/web /prod/web 32 WORKDIR /prod/web 33 EXPOSE 8002 34 + CMD ["node", "dist/index.js"] 35 36 FROM base AS bot 37 + COPY --from=build --chown=1000:1000 /prod/bot /prod/bot 38 WORKDIR /prod/bot 39 + CMD ["node", "dist/main.js"] 40 41 FROM base AS tapper 42 + COPY --from=build --chown=1000:1000 /prod/tapper /prod/tapper 43 WORKDIR /prod/tapper 44 + CMD ["node", "dist/index.js"] 45 + 46 + LABEL 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"
+1
docker-compose.prod.yml
··· 37 condition: service_healthy 38 39 environment: 40 TAP_ADMIN_PASSWORD: "${TAP_ADMIN_PASSWORD:?TAP_ADMIN_PASSWORD is required}" 41 bot: 42 container_name: bot
··· 37 condition: service_healthy 38 39 environment: 40 + NODE_ENV: production 41 TAP_ADMIN_PASSWORD: "${TAP_ADMIN_PASSWORD:?TAP_ADMIN_PASSWORD is required}" 42 bot: 43 container_name: bot
-1
package.json
··· 17 "web": "pnpm --filter web dev", 18 "build": "pnpm -r build", 19 "build:watch": "pnpm -r build:watch", 20 - "docker:web": "docker build . --target web --tag web:latest", 21 "dev:all": "pnpm --filter './apps/**' dev", 22 "typecheck": "pnpm --filter './apps/**' typecheck", 23 "lint": "oxlint",
··· 17 "web": "pnpm --filter web dev", 18 "build": "pnpm -r build", 19 "build:watch": "pnpm -r build:watch", 20 "dev:all": "pnpm --filter './apps/**' dev", 21 "typecheck": "pnpm --filter './apps/**' typecheck", 22 "lint": "oxlint",