A discord bot for teal.fm
discord tealfm music

consolidate dockerfiles into one file

besaid.zone 670c0243 875078ff

verified
+31
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"]
-18
Dockerfile.bot
··· 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/bot --prod /prod/bot 14 - 15 - FROM base AS bot 16 - COPY --from=build /prod/bot /prod/bot 17 - WORKDIR /prod/bot 18 - CMD ["pnpm", "start"]
-18
Dockerfile.tap
··· 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/tapper --prod /prod/tapper 14 - 15 - FROM base AS tapper 16 - COPY --from=build /prod/tapper /prod/tapper 17 - WORKDIR /prod/tapper 18 - CMD ["pnpm", "start"]
-19
Dockerfile.web
··· 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 - 15 - FROM base AS web 16 - COPY --from=build /prod/web /prod/web 17 - WORKDIR /prod/web 18 - EXPOSE 8002 19 - CMD ["pnpm", "start"]
+5 -8
docker-compose.yml
··· 5 5 build: 6 6 context: . 7 7 dockerfile: Dockerfile.web 8 + target: web 8 9 ports: 9 10 - 8002:8002 10 - environment: 11 - NODE_ENV: production 12 11 13 12 depends_on: 14 13 db: ··· 19 18 container_name: tapper 20 19 build: 21 20 context: . 22 - dockerfile: Dockerfile.tap 23 - environment: 24 - NODE_ENV: production 21 + dockerfile: Dockerfile 22 + target: tapper 25 23 26 24 depends_on: 27 25 db: ··· 31 29 restart: always 32 30 build: 33 31 context: . 34 - dockerfile: Dockerfile.bot 35 - environment: 36 - NODE_ENV: production 32 + dockerfile: Dockerfile 33 + target: bot 37 34 38 35 depends_on: 39 36 db:
+1
package.json
··· 16 16 "tap": "pnpm --filter tapper dev", 17 17 "web": "pnpm --filter web dev", 18 18 "build": "pnpm -r build", 19 + "build:watch": "pnpm -r build:watch", 19 20 "docker:web": "docker build . --target web --tag web:latest", 20 21 "dev:all": "pnpm --filter './apps/**' dev", 21 22 "typecheck": "pnpm --filter './apps/**' typecheck",
+1
packages/common/package.json
··· 14 14 } 15 15 }, 16 16 "scripts": { 17 + "build:watch": "tsc --watch", 17 18 "build": "tsc", 18 19 "typecheck": "tsc --noEmit" 19 20 },
+1
packages/database/package.json
··· 15 15 }, 16 16 "types": "./database.d.ts", 17 17 "scripts": { 18 + "build:watch": "tsc --watch", 18 19 "build": "tsc", 19 20 "migrate": "kysely migrate latest", 20 21 "codegen": "kysely-codegen --dialect postgres --env-file='../../.env' --out-file ./database.d.ts",