version: '3.8'

services:
  web:
    image: odoo:18.0
    container_name: odoo18_web
    depends_on:
      - db
    ports:
      - "8069:8069"
      - "8072:8072"  # Longpolling port
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
      - ./logs:/var/log/odoo
    environment:
      - HOST=db
      - USER=odoo
      - PASSWORD=myodoo2025
      - POSTGRES_DB=postgres
      - PROXY_MODE=true
      - LIST_DB=false
      - WORKERS=2
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8069/web/webclient/version_info"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 40s

  db:
    image: postgres:15
    container_name: odoo18_db
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=myodoo2025
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
      - ./backups:/backups
    restart: unless-stopped
    command: postgres -c max_connections=200 -c shared_buffers=256MB -c effective_cache_size=1GB
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U odoo"]
      interval: 30s
      timeout: 10s
      retries: 5

  nginx:
    image: nginx:alpine
    container_name: odoo18_nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./ssl:/etc/nginx/ssl:ro
    depends_on:
      - web
    restart: unless-stopped

volumes:
  odoo-web-data:
  odoo-db-data:

networks:
  default:
    name: odoo_network