# Development Docker Compose für Odoo mit VS Code Integration # Erweiterte Version der originalen docker-compose.yaml für Development #name: odoo-18 services: odoo-dev: image: gitea.lan.hobbyhimmel.de/hobbyhimmel/odoo:18.0-dev container_name: hobbyhimmel_odoo_${CONTAINER_NAME_EXTENSION} user: "100:101" # Gleiche User-ID wie Production für Volume-Kompatibilität environment: - ODOO_CONFIG_FILE=/etc/odoo/odoo-dev.conf - ODOO_EXTRA_ARGS= - PGHOST=${DB_HOST} - PGPORT=${DB_PORT} - PGUSER=${DB_USER} - PGPASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} # Development Environment Variables - ODOO_DEV=${ODOO_DEV:-0} # Aktiviert Development-Modus - ODOO_DEBUG=${ODOO_DEBUG:-0} # Wird durch Shell-Env oder .env überschreibbar - PYTHONPATH=/mnt/extra-addons volumes: - odoo18-conf:/etc/odoo - odoo18-data:/var/lib/odoo # Development-spezifische Volumes - ../extra-addons:/mnt/extra-addons:rw # Base extra-addons directory - ./src:/opt/odoo/src:rw # Source-Dateien für schnelle Änderungen # VS Code Development Container Support - /var/run/docker.sock:/var/run/docker.sock:ro # Docker Socket für VS Code ports: - "${ODOO_PORT:-8069}:8069" - "8071:8071" # HTTPS - "8072:8072" # Longpolling - "4338:5678" # Debug Port für VS Code stdin_open: true # -i in Docker run (interactive) tty: true # -t in Docker run (allocate a pseudo-TTY) depends_on: - db restart: unless-stopped networks: - npm-nw - odoo18-nw # Development-spezifische Einstellungen command: ["odoo"] # Standard-Start, kann überschrieben werden # working_dir: /opt/odoo/workspace db: image: postgres:15 container_name: hobbyhimmel_odoo_${CONTAINER_NAME_EXTENSION}_db environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=postgres - PGDATA=/var/lib/postgresql/data volumes: - "odoo18-db:/var/lib/postgresql/data" shm_size: '1g' # Shared memory size for PostgreSQL restart: unless-stopped networks: - odoo18-nw # Für Development kann der DB-Port freigeschaltet werden ports: - "5432:5432" pgadmin: image: dpage/pgadmin4:latest container_name: hobbyhimmel_odoo_${CONTAINER_NAME_EXTENSION}_pgadmin environment: - PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL:-admin@admin.com} - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:-admin} - PGADMIN_CONFIG_SERVER_MODE=False - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False volumes: - pgadmin-data:/var/lib/pgadmin - ./pgadmin/servers.json:/pgadmin4/servers.json:ro - ./pgadmin/preferences.json:/pgadmin4/preferences.json:ro ports: - "${PGADMIN_PORT:-5050}:80" depends_on: - db restart: unless-stopped networks: - odoo18-nw mosquitto: image: eclipse-mosquitto:2 container_name: hobbyhimmel_odoo_${CONTAINER_NAME_EXTENSION}_mosquitto volumes: - mosquitto-data:/mosquitto/data - mosquitto-logs:/mosquitto/log - ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro ports: - "1883:1883" # MQTT unencrypted (für lokale Tests) - "9001:9001" # WebSockets (optional) restart: unless-stopped networks: - odoo18-nw iot-bridge: image: iot_mqtt_bridge:latest container_name: hobbyhimmel_odoo_${CONTAINER_NAME_EXTENSION}_iot_bridge environment: - LOG_LEVEL=DEBUG - PYTHONUNBUFFERED=1 - BRIDGE_PORT=8080 - BRIDGE_API_TOKEN=${BRIDGE_API_TOKEN:-} # Optional: Bearer token for auth command: python3 /app/main.py --config /app/config.dev.yaml volumes: # Mount entire source code folder for development - ../iot_bridge:/app # Persistent storage for config-active.yaml - iot-bridge-data:/data ports: - "8080:8080" # HTTP Config API depends_on: - mosquitto - odoo-dev restart: unless-stopped networks: - odoo18-nw volumes: odoo18-db: odoo18-conf: odoo18-data: pgadmin-data: mosquitto-data: mosquitto-logs: iot-bridge-data: networks: odoo18-nw: npm-nw: # external: true # Uncomment, if this network is defined by the nginx-proxy-manager