From 4a5b26930d6821df808866f1e602722be6f6fba3 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 3 Sep 2025 22:40:50 +0100 Subject: [PATCH] chore: add Dockerfile and docker-compose for API + MCP --- Dockerfile | 19 +++++++++++++++++++ docker-compose.yml | 26 ++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..272471f2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +# Minimal Dockerfile for Soulfield API (Node backend) +FROM node:20-alpine AS base + +ENV NODE_ENV=production +WORKDIR /app + +# Install dependencies first (better layer caching) +COPY package.json package-lock.json ./ +RUN npm ci --only=production + +# Copy source +COPY . . + +# Expose API and MCP ports +EXPOSE 8790 8791 + +# Default command runs the API server. Use compose to run MCP. +CMD ["node", "backend/index.cjs"] + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..4169d2fb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.9" +services: + api: + build: . + image: soulfield-api:local + env_file: + - .env + environment: + # Allow offline runs if keys aren’t set + - DEV_NO_API=${DEV_NO_API:-1} + - PORT=8790 + ports: + - "8790:8790" + command: ["node", "backend/index.cjs"] + restart: unless-stopped + + mcp: + build: . + image: soulfield-api:local + depends_on: + - api + ports: + - "8791:8791" + command: ["node", "backend/mcp-server.cjs"] + restart: unless-stopped +