diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d630850 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +node_modules +dist +.env +data +*.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b7f1c32 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Build frontend +FROM oven/bun:1 AS builder +WORKDIR /app + +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile + +COPY . . +RUN bun run build + +# Production runtime +FROM oven/bun:1-slim AS runner +WORKDIR /app + +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile --production + +COPY server/ ./server/ +COPY --from=builder /app/dist ./dist/ + +RUN mkdir -p data + +EXPOSE 3001 +CMD ["bun", "run", "server/index.ts"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..07d37db --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + app: + build: . + ports: + - "3001:3001" + environment: + - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} + - TEACHING_BOOKS_DB=/app/data/teaching-books.db + volumes: + - db_data:/app/data + restart: unless-stopped + +volumes: + db_data: