x-default: &default restart: unless-stopped logging: driver: json-file options: max-size: 100m max-file: "3" services: odoo: <<: *default image: odoo:${ODOO_VERSION:-19.0} depends_on: odoo-db: condition: service_healthy ports: - "${ODOO_PORT_OVERRIDE:-8069}:8069" volumes: - odoo_web_data:/var/lib/odoo - odoo_addons:/mnt/extra-addons environment: - TZ=${TZ:-UTC} - HOST=odoo-db - USER=${POSTGRES_USER:-odoo} - PASSWORD=${POSTGRES_PASSWORD:-odoopass} - DB_PORT=5432 - DB_NAME=${POSTGRES_DB:-postgres} deploy: resources: limits: cpus: '2.0' memory: 2G reservations: cpus: '0.5' memory: 1G healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8069/"] interval: 30s timeout: 10s retries: 3 start_period: 60s odoo-db: <<: *default image: postgres:${POSTGRES_VERSION:-17-alpine} environment: - TZ=${TZ:-UTC} - POSTGRES_USER=${POSTGRES_USER:-odoo} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-odoopass} - POSTGRES_DB=${POSTGRES_DB:-postgres} - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo_db_data:/var/lib/postgresql/data deploy: resources: limits: cpus: '1.0' memory: 1G reservations: cpus: '0.25' memory: 512M healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-odoo}"] interval: 10s timeout: 5s retries: 5 start_period: 30s volumes: odoo_web_data: odoo_addons: odoo_db_data: