version: '3.8' services: server: build: context: ./server dockerfile: Dockerfile container_name: task-receipts-server ports: - "4000:4000" environment: - NODE_ENV=production volumes: # Mount database directory for persistence - ./server/data:/app/data restart: unless-stopped healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:4000/graphql', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) })"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - task-receipts-network client: build: context: ./client dockerfile: Dockerfile container_name: task-receipts-client ports: - "80:80" depends_on: server: condition: service_healthy restart: unless-stopped networks: - task-receipts-network networks: task-receipts-network: driver: bridge volumes: server-data: driver: local