Files
libredesk/docker-compose.yml
wangliang 39986f10f2 初始化 LibreDesk 本地实例部署仓库
- docker compose 部署:app / db / redis / tls(nginx) / bridge-tools,宿主端口错开避免与本机服务冲突
- bridge-tools 内联进仓库(compose build 路径改为 ./bridge-tools),仓库自包含可部署
- 部署说明 README、crm-new 对照与 bridge-tools 方案文档、备份与隧道脚本
- .gitignore 排除 .env、config.toml、uploads/、tls 私钥/证书、backups/、logs/
2026-10-29 13:24:13 +08:00

121 lines
4.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LibreDesk 独立实例(yehwang-ai 工作区)
# 基于官方 https://github.com/abhinavxd/libredesk/blob/main/docker-compose.yml
# 改动:镜像固定版本;宿主端口错开(app 9001 / pg 5433 / redis 6380),避免与本机已有服务冲突。
services:
# Libredesk app
app:
image: ${LIBREDESK_IMAGE:-libredesk/libredesk:v2.9.0}
container_name: libredesk_app
restart: unless-stopped
ports:
- "127.0.0.1:9001:9000"
environment:
# 首次启动时设置 System 用户密码(后续可用 --set-system-user-password 修改)
LIBREDESK_SYSTEM_USER_PASSWORD: ${LIBREDESK_SYSTEM_USER_PASSWORD:-}
# v2.9.1 起 /health 会在数据库不可用时返回非 200
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:9000/health || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
networks:
- libredesk
depends_on:
- db
- redis
volumes:
- ./uploads:/libredesk/uploads:rw
- ./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"]
# HTTPS 终止反代:libredesk 的 Agent WebSocket 只允许 https 或 localhost 的 Origin,
# 用 http://<局域网IP>:9001 访问后台会一直 “Connecting...”,故加这层 TLS。
tls:
image: nginx:alpine
container_name: libredesk_tls
restart: unless-stopped
ports:
- "9443:443"
volumes:
- ./tls/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./tls/cert.pem:/etc/nginx/certs/cert.pem:ro
- ./tls/privkey.pem:/etc/nginx/certs/privkey.pem:ro
depends_on:
- app
networks:
- libredesk
# 业务工具服务:从 crm-new/bridge 裁剪,只保留 4 个 AI 工具(商品/订单/库存/客户资料)
bridge-tools:
build: ./bridge-tools
container_name: libredesk_bridge_tools
restart: unless-stopped
environment:
TOOLS_PORT: 4100
TOOLS_PUBLIC_BASE_URL: http://bridge-tools:4100
TOOLS_SHARED_KEY: ${BRIDGE_TOOLS_KEY}
TOOLS_DEV_BYPASS: "false"
RECOMMEND_URL: ${RPC_RECOMMEND_URL}
ORDER_API_URL: ${RPC_ORDER_URL}
INVENTORY_API_URL: ${RPC_INVENTORY_URL}
MEMBER_RPC_URL: ${RPC_MEMBER_URL}
RPC_TIMEOUT_MS: 8000
PRODUCT_TIMEOUT_MS: 30000
SITE_SEARCH_URL: https://www.yehwang.com/search.html?q=
DEFAULT_TENANT_ID: 2
DEFAULT_LANGUAGE_ID: 1
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
# 仅本机调试用,LibreDesk 通过容器名 bridge-tools:4100 访问
- "127.0.0.1:4101:4100"
depends_on:
- app
networks:
- libredesk
# PostgreSQL database
db:
# 本机 docker.io 拉取 postgres:17-alpine 持续失败,改用已缓存的 PG18 基础镜像(与 crm-new 同款,libredesk 已验证兼容)
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: 10s
timeout: 5s
retries: 6
volumes:
# PG18 官方镜像要求挂载 /var/lib/postgresql(数据在子目录)
- postgres-data:/var/lib/postgresql
# Redis
redis:
image: redis:7-alpine
container_name: libredesk_redis
restart: unless-stopped
networks:
- libredesk
ports:
# 仅本机可连,避免与本机 6379 冲突
- "127.0.0.1:6380:6379"
volumes:
- redis-data:/data
networks:
libredesk:
volumes:
postgres-data:
redis-data: