services: # Laravel App (PHP-FPM) app: build: context: . dockerfile: docker/php/Dockerfile container_name: laravel_app restart: unless-stopped working_dir: /var/www/html/backend volumes: - ./backend:/var/www/html/backend networks: - app-network depends_on: - db # Nginx Web Server webserver: image: nginx:alpine container_name: laravel_nginx restart: unless-stopped ports: - "8000:80" volumes: - ./backend:/var/www/html/backend - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf networks: - app-network depends_on: - app # PostgreSQL Database # (Note: Set to PostgreSQL per your 8.5/PostgreSQL/Node 24 requirement) db: image: postgres:16-alpine container_name: laravel_db restart: unless-stopped environment: POSTGRES_DB: neoban POSTGRES_USER: neoban POSTGRES_PASSWORD: secret ports: - "5432:5432" volumes: - dbdata:/var/lib/postgresql/data networks: - app-network # Angular Frontend frontend: image: node:24-alpine container_name: angular_frontend restart: unless-stopped working_dir: /app/frontend volumes: - ./frontend:/app/frontend ports: - "4200:4200" # Runs install and starts Angular bound to 0.0.0.0 so it is accessible outside the container command: sh -c "npm install && npx ng serve --host 0.0.0.0 --poll 2000" networks: - app-network networks: app-network: driver: bridge volumes: dbdata: