Add Docker files for deployment
Some checks are pending
CI / Engine — lint / typecheck / test (push) Waiting to run
CI / API — lint / typecheck / test (push) Waiting to run
CI / Web — typecheck / lint / build (push) Waiting to run

- docker-compose.yml: api, worker, web, redis services
- packages/api/Dockerfile
- packages/web/Dockerfile

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Manohar Gupta 2026-05-13 10:45:35 +05:30
parent e6dc39aa33
commit f125015bcc
3 changed files with 104 additions and 2 deletions

View file

@ -6,7 +6,45 @@ services:
- "6379:6379" - "6379:6379"
volumes: volumes:
- redis_data:/data - redis_data:/data
command: redis-server --save 60 1 --loglevel warning
api:
build:
context: .
dockerfile: packages/api/Dockerfile
restart: unless-stopped
ports:
- "8000:8000"
environment:
- DATABASE_URL=sqlite:///./remodel.db
- REDIS_URL=redis://redis:6379
depends_on:
- redis
volumes:
- ./data:/app/data
worker:
build:
context: .
dockerfile: packages/api/Dockerfile
command: arq remodel_api.workers.main.WorkerSettings
restart: unless-stopped
environment:
- DATABASE_URL=sqlite:///./remodel.db
- REDIS_URL=redis://redis:6379
depends_on:
- redis
volumes:
- ./data:/app/data
web:
build:
context: ./packages/web
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NEXT_PUBLIC_API_URL=http://api:8000
volumes: volumes:
redis_data: redis_data:

26
packages/api/Dockerfile Normal file
View file

@ -0,0 +1,26 @@
FROM python:3.12-slim
WORKDIR /app
# Install poetry
RUN pip install poetry
# Copy project files
COPY packages/engine/pyproject.toml packages/engine/ /app/packages/engine/
COPY packages/api/pyproject.toml packages/api/ /app/packages/api/
# Install dependencies
RUN poetry install --no-interaction --no-venv-seeding
# Copy source
COPY packages/engine/src /app/packages/engine/src
COPY packages/api/src /app/packages/api/src
# Set Python path
ENV PYTHONPATH=/app/packages/engine/src:/app/packages/api/src
WORKDIR /app/packages/api
EXPOSE 8000
CMD ["uvicorn", "remodel_api.main:app", "--host", "0.0.0.0", "--port", "8000"]

38
packages/web/Dockerfile Normal file
View file

@ -0,0 +1,38 @@
FROM node:20-alpine AS builder
WORKDIR /app
# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate
# Copy web package
COPY package.json pnpm-lock.yaml ./
COPY . .
# Install dependencies
RUN pnpm install --frozen-lockfile
# Build
RUN pnpm build
# Production runner
FROM node:20-alpine
WORKDIR /app
# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate
# Copy built artifacts
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json .
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/.env.local ./.env.local
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
EXPOSE 3000
CMD ["node", "server.js"]