services: backend: build: context: ./backend dockerfile: Dockerfile ports: - "4000:4000" environment: - PORT=4000 - NODE_ENV=development - CONDUCTOR_SECRET_KEY=${CONDUCTOR_SECRET_KEY:-} # Data directory is mounted so the SQLite file survives container restarts. # shared/ is mounted read-only at /shared so the backend can resolve the # schema via path.resolve(__dirname, '../../../shared/schemas/...'). # __dirname inside the container is /app/src/lib; three levels up is /, # so the full resolved path is /shared/schemas/conductor-project.schema.json. volumes: - ./backend/data:/app/data - ./shared:/shared:ro frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: # Used by the CRA dev-server proxy — must match the Compose service name - REACT_APP_API_URL=http://backend:4000 - CI=false depends_on: - backend