name: crm-libredesk # 一套独立的 LibreDesk 实例:自带 Postgres/Redis,端口与旧 crm 栈隔离。 # - LibreDesk : http://localhost:9000 # - Postgres : 127.0.0.1:5433(旧栈是 5432) # - Redis : 127.0.0.1:6380(旧栈是 6379) # Tools 服务跑在宿主机 :4010(见 README),LibreDesk 通过 host.docker.internal 访问。 services: app: image: ${LIBREDESK_IMAGE:-libredesk/libredesk:latest} container_name: libredesk_app restart: unless-stopped ports: - "9000:9000" extra_hosts: - "host.docker.internal:host-gateway" environment: LIBREDESK_SYSTEM_USER_PASSWORD: ${LIBREDESK_SYSTEM_USER_PASSWORD:-} networks: - libredesk depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - ./uploads:/libredesk/uploads:rw - ./config/config.toml:/libredesk/config.toml:ro command: - sh - -c - >- ./libredesk --install --idempotent-install --yes --config /libredesk/config.toml && ./libredesk --upgrade --yes --config /libredesk/config.toml && ./libredesk --config /libredesk/config.toml db: image: ${POSTGRES_IMAGE:-pgvector/pgvector:pg18} container_name: libredesk_db restart: unless-stopped networks: - libredesk ports: # 只绑本机,避免与旧栈 5432 冲突 - "127.0.0.1:5433:5432" environment: POSTGRES_USER: ${POSTGRES_USER:-libredesk} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-libredesk} POSTGRES_DB: ${POSTGRES_DB:-libredesk} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-libredesk} -d ${POSTGRES_DB:-libredesk}"] interval: 5s timeout: 5s retries: 12 volumes: # PG18 镜像要求挂载 /var/lib/postgresql(数据在子目录 18/docker) - postgres-data:/var/lib/postgresql redis: image: ${REDIS_IMAGE:-redis:7-alpine} container_name: libredesk_redis restart: unless-stopped networks: - libredesk ports: - "127.0.0.1:6380:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 12 volumes: - redis-data:/data networks: libredesk: volumes: postgres-data: redis-data: