version: '3.8' services: # PostgreSQL Database postgres: image: postgres:15-alpine container_name: scommetti-postgres environment: POSTGRES_DB: amici_scommesse POSTGRES_USER: admin POSTGRES_PASSWORD: admin ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./backend-node/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - scommetti-network healthcheck: test: ["CMD-SHELL", "pg_isready -U admin -d amici_scommesse"] interval: 10s timeout: 5s retries: 5 # MongoDB Database mongodb: image: mongo:7 container_name: scommetti-mongodb environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root@servovio MONGO_INITDB_DATABASE: amici-scommesse ports: - "27017:27017" volumes: - mongodb_data:/data/db networks: - scommetti-network healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 5s retries: 5 # Backend Node.js backend: build: context: ./backend-node dockerfile: Dockerfile container_name: scommetti-backend environment: NODE_ENV: development PORT: 3000 POSTGRES_URI: postgres://admin:admin@postgres:5432/amici_scommesse MONGO_URI: mongodb://mongodb:27017/amici-scommesse ports: - "3000:3000" volumes: - ./backend-node:/app - /app/node_modules depends_on: postgres: condition: service_healthy mongodb: condition: service_healthy networks: - scommetti-network command: npm start restart: unless-stopped # Frontend Angular frontend: build: context: ./frontend-angular dockerfile: Dockerfile container_name: scommetti-frontend environment: NODE_ENV: development ports: - "4200:4200" volumes: - ./frontend-angular:/app - /app/node_modules - /app/.angular depends_on: - backend networks: - scommetti-network command: npm run dev restart: unless-stopped volumes: postgres_data: driver: local mongodb_data: driver: local networks: scommetti-network: driver: bridge