+31
Dockerfile
+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
-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
-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
-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
-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
+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
+1
packages/common/package.json
+1
packages/database/package.json
+1
packages/database/package.json