A discord bot for teal.fm
discord tealfm music

a bunch of dockerfile changes

besaid.zone e79046c7 e35e63eb

verified
+2
.dockerignore
··· 6 6 **/dist 7 7 .pnpm-store 8 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 1 FROM node:24-alpine AS base 2 2 ENV PNPM_HOME="/pnpm" 3 3 ENV PATH="$PNPM_HOME:$PATH" 4 - ENV NODE_ENV=production 5 4 RUN corepack enable 5 + USER 1000 6 + 7 + ARG VERSION 8 + ARG BUILD_DATE 9 + ARG SHA 6 10 7 11 FROM base AS build 8 - COPY . /app 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/ 9 21 WORKDIR /app 10 22 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 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 + 16 29 17 30 FROM base AS web 18 - COPY --from=build /prod/web /prod/web 31 + COPY --from=build --chown=1000:1000 /prod/web /prod/web 19 32 WORKDIR /prod/web 20 33 EXPOSE 8002 21 - CMD ["pnpm", "start"] 34 + CMD ["node", "dist/index.js"] 22 35 23 36 FROM base AS bot 24 - COPY --from=build /prod/bot /prod/bot 37 + COPY --from=build --chown=1000:1000 /prod/bot /prod/bot 25 38 WORKDIR /prod/bot 26 - CMD ["pnpm", "start"] 39 + CMD ["node", "dist/main.js"] 27 40 28 41 FROM base AS tapper 29 - COPY --from=build /prod/tapper /prod/tapper 42 + COPY --from=build --chown=1000:1000 /prod/tapper /prod/tapper 30 43 WORKDIR /prod/tapper 31 - CMD ["pnpm", "start"] 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 37 condition: service_healthy 38 38 39 39 environment: 40 + NODE_ENV: production 40 41 TAP_ADMIN_PASSWORD: "${TAP_ADMIN_PASSWORD:?TAP_ADMIN_PASSWORD is required}" 41 42 bot: 42 43 container_name: bot
-1
package.json
··· 17 17 "web": "pnpm --filter web dev", 18 18 "build": "pnpm -r build", 19 19 "build:watch": "pnpm -r build:watch", 20 - "docker:web": "docker build . --target web --tag web:latest", 21 20 "dev:all": "pnpm --filter './apps/**' dev", 22 21 "typecheck": "pnpm --filter './apps/**' typecheck", 23 22 "lint": "oxlint",