Use additional_contexts to copy platform server package into the Docker build context. Rewrites the file: dependency path and removes the lockfile so npm install can resolve the local package correctly. Applied to both production and dev Dockerfiles.
49 lines
1.2 KiB
YAML
49 lines
1.2 KiB
YAML
services:
|
|
# Backend server
|
|
server:
|
|
build:
|
|
context: ./server
|
|
dockerfile: Dockerfile
|
|
additional_contexts:
|
|
platform-server: ../cc-platform-core/server
|
|
container_name: turtle-server
|
|
ports:
|
|
- "4200:3001" # HTTP API + WebSocket (unified)
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=3001
|
|
- INVENTORY_SERVER_URL=${INVENTORY_SERVER_URL:-}
|
|
- API_KEY=${API_KEY:-}
|
|
restart: unless-stopped
|
|
networks:
|
|
- turtle-network
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3001/api/turtles', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
|
|
interval: 30s
|
|
timeout: 3s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
# Frontend client
|
|
client:
|
|
build:
|
|
context: ./client
|
|
dockerfile: Dockerfile
|
|
container_name: turtle-client
|
|
ports:
|
|
- "4444:3000" # Vite preview server
|
|
depends_on:
|
|
- server
|
|
restart: unless-stopped
|
|
networks:
|
|
- turtle-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000"]
|
|
interval: 30s
|
|
timeout: 3s
|
|
retries: 3
|
|
|
|
networks:
|
|
turtle-network:
|
|
driver: bridge
|