Initial import
This commit is contained in:
13
infra/docker/README.md
Normal file
13
infra/docker/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# infra/docker
|
||||
|
||||
Docker build definitions for the single-VPS Compose topology.
|
||||
|
||||
## Implemented in this iteration
|
||||
- Workspace-aware Node 22 images for `web`, `worker`, and `bot`
|
||||
- Dedicated `migrate` image for schema bootstrap
|
||||
- `corepack` + `pnpm` based install flow inside containers
|
||||
- TypeScript build step for each runtime before container startup
|
||||
|
||||
## Current limitations
|
||||
- No production pruning yet
|
||||
- No `cli` image yet
|
||||
32
infra/docker/bot.Dockerfile
Normal file
32
infra/docker/bot.Dockerfile
Normal file
@@ -0,0 +1,32 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
ENV PNPM_HOME=/pnpm
|
||||
ENV PATH=$PNPM_HOME:$PATH
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
|
||||
COPY apps/bot/package.json apps/bot/package.json
|
||||
COPY packages/config/package.json packages/config/package.json
|
||||
COPY packages/db/package.json packages/db/package.json
|
||||
COPY packages/domain/package.json packages/domain/package.json
|
||||
COPY packages/providers/package.json packages/providers/package.json
|
||||
|
||||
RUN pnpm install --no-frozen-lockfile
|
||||
|
||||
COPY apps/bot apps/bot
|
||||
COPY packages/config packages/config
|
||||
COPY packages/db packages/db
|
||||
COPY packages/domain packages/domain
|
||||
COPY packages/providers packages/providers
|
||||
|
||||
RUN pnpm --filter @nproxy/config build
|
||||
RUN pnpm --filter @nproxy/domain build
|
||||
RUN pnpm --filter @nproxy/providers build
|
||||
RUN pnpm --filter @nproxy/db generate
|
||||
RUN pnpm --filter @nproxy/db build
|
||||
RUN pnpm --filter @nproxy/bot build
|
||||
|
||||
CMD ["node", "apps/bot/dist/main.js"]
|
||||
32
infra/docker/cli.Dockerfile
Normal file
32
infra/docker/cli.Dockerfile
Normal file
@@ -0,0 +1,32 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
ENV PNPM_HOME=/pnpm
|
||||
ENV PATH=$PNPM_HOME:$PATH
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
|
||||
COPY apps/cli/package.json apps/cli/package.json
|
||||
COPY packages/config/package.json packages/config/package.json
|
||||
COPY packages/db/package.json packages/db/package.json
|
||||
COPY packages/domain/package.json packages/domain/package.json
|
||||
COPY packages/providers/package.json packages/providers/package.json
|
||||
|
||||
RUN pnpm install --no-frozen-lockfile
|
||||
|
||||
COPY apps/cli apps/cli
|
||||
COPY packages/config packages/config
|
||||
COPY packages/db packages/db
|
||||
COPY packages/domain packages/domain
|
||||
COPY packages/providers packages/providers
|
||||
|
||||
RUN pnpm --filter @nproxy/config build
|
||||
RUN pnpm --filter @nproxy/domain build
|
||||
RUN pnpm --filter @nproxy/providers build
|
||||
RUN pnpm --filter @nproxy/db generate
|
||||
RUN pnpm --filter @nproxy/db build
|
||||
RUN pnpm --filter @nproxy/cli build
|
||||
|
||||
CMD ["node", "apps/cli/dist/main.js"]
|
||||
26
infra/docker/migrate.Dockerfile
Normal file
26
infra/docker/migrate.Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
ENV PNPM_HOME=/pnpm
|
||||
ENV PATH=$PNPM_HOME:$PATH
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
|
||||
COPY packages/db/package.json packages/db/package.json
|
||||
COPY packages/domain/package.json packages/domain/package.json
|
||||
COPY packages/providers/package.json packages/providers/package.json
|
||||
|
||||
RUN pnpm install --no-frozen-lockfile
|
||||
|
||||
COPY packages/db packages/db
|
||||
COPY packages/domain packages/domain
|
||||
COPY packages/providers packages/providers
|
||||
|
||||
RUN pnpm --filter @nproxy/domain build
|
||||
RUN pnpm --filter @nproxy/providers build
|
||||
RUN pnpm --filter @nproxy/db generate
|
||||
RUN pnpm --filter @nproxy/db build
|
||||
|
||||
CMD ["sh", "-lc", "pnpm --filter @nproxy/db migrate:deploy && node packages/db/dist/bootstrap-main.js"]
|
||||
34
infra/docker/web.Dockerfile
Normal file
34
infra/docker/web.Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
ENV PNPM_HOME=/pnpm
|
||||
ENV PATH=$PNPM_HOME:$PATH
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
|
||||
COPY apps/web/package.json apps/web/package.json
|
||||
COPY packages/config/package.json packages/config/package.json
|
||||
COPY packages/db/package.json packages/db/package.json
|
||||
COPY packages/domain/package.json packages/domain/package.json
|
||||
COPY packages/providers/package.json packages/providers/package.json
|
||||
|
||||
RUN pnpm install --no-frozen-lockfile
|
||||
|
||||
COPY apps/web apps/web
|
||||
COPY packages/config packages/config
|
||||
COPY packages/db packages/db
|
||||
COPY packages/domain packages/domain
|
||||
COPY packages/providers packages/providers
|
||||
|
||||
RUN pnpm --filter @nproxy/config build
|
||||
RUN pnpm --filter @nproxy/domain build
|
||||
RUN pnpm --filter @nproxy/providers build
|
||||
RUN pnpm --filter @nproxy/db generate
|
||||
RUN pnpm --filter @nproxy/db build
|
||||
RUN pnpm --filter @nproxy/web build
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["node", "apps/web/dist/main.js"]
|
||||
32
infra/docker/worker.Dockerfile
Normal file
32
infra/docker/worker.Dockerfile
Normal file
@@ -0,0 +1,32 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
ENV PNPM_HOME=/pnpm
|
||||
ENV PATH=$PNPM_HOME:$PATH
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
|
||||
COPY apps/worker/package.json apps/worker/package.json
|
||||
COPY packages/config/package.json packages/config/package.json
|
||||
COPY packages/db/package.json packages/db/package.json
|
||||
COPY packages/domain/package.json packages/domain/package.json
|
||||
COPY packages/providers/package.json packages/providers/package.json
|
||||
|
||||
RUN pnpm install --no-frozen-lockfile
|
||||
|
||||
COPY apps/worker apps/worker
|
||||
COPY packages/config packages/config
|
||||
COPY packages/db packages/db
|
||||
COPY packages/domain packages/domain
|
||||
COPY packages/providers packages/providers
|
||||
|
||||
RUN pnpm --filter @nproxy/config build
|
||||
RUN pnpm --filter @nproxy/domain build
|
||||
RUN pnpm --filter @nproxy/providers build
|
||||
RUN pnpm --filter @nproxy/db generate
|
||||
RUN pnpm --filter @nproxy/db build
|
||||
RUN pnpm --filter @nproxy/worker build
|
||||
|
||||
CMD ["node", "apps/worker/dist/main.js"]
|
||||
Reference in New Issue
Block a user