services: skilldock: image: skilldock:0.4.4 container_name: skilldock restart: unless-stopped ports: # 默认用 8082,访问 http://skilldock.dntc.com.cn:8082 # # 想去掉地址里的端口号,就改成 "80:8080" —— 注意这不需要你是 root: # 绑定 80 的是 Docker 守护进程(它本来就以 root 跑),只要你能执行 # docker 命令就行。唯一的例外是 rootless Docker,那种情况下守护进程 # 是你自己,确实绑不了 1024 以下的端口。用哪种,一条命令就能试出来: # docker run --rm -p 80:80 alpine true - "8082:8080" volumes: # 数据库、SKILL.md 缓存都在这儿。删了就是重来一遍: # 技能内容会自己拉回来,星标、用户表、AI 解释缓存不会。 # # 用具名卷而不是 ./data —— 容器里跑的是非 root 用户(uid 10001), # 直接挂宿主机目录会因为属主是 root 而写不进去。 # 一定要挂目录的话:mkdir data && chown -R 10001:10001 data,再换成 ./data:/data - skilldock-data:/data environment: # GitLab 令牌和模型密钥都已经编进镜像,不配也能起。 # 下面这些是用来"覆盖"内置值的,换密钥时改一行重启即可,不用重新构建。 # —— 唯一建议你填的一项:/admin 的口令。留空则整个管理页关闭 —— SKILLDOCK_ADMIN_KEY: "换成你自己的口令" # —— 下面全部有内置默认值,一般不用动 —— # SKILLDOCK_GITLAB_TOKEN: "-pPPmxw9HkiimfmvN5LP" # SKILLDOCK_GITLAB_BASE: "https://dntcdevcloud.dongfeng-nissan.com.cn/gitlab" # SKILLDOCK_GITLAB_PROJECT: "CDC-Demo/skills" # SKILLDOCK_AI_KEY: "sk-…" # SKILLDOCK_AI_BASE: "http://172.28.208.209/v1" # SKILLDOCK_AI_MODELS: "niagent-internal,deepseek-v4-flash,qwen3.5,PCE-QW" # 前面没有反代,所以不信任 X-Forwarded-For —— 否则任何人 # 加一个请求头就能换一个 IP 身份,用户表和防刷就都白做了。 # 改成走 nginx 反代之后,删掉这一行,并且在 nginx 里加 # proxy_set_header X-Real-IP $remote_addr; SKILLDOCK_TRUST_PROXY: "0" volumes: skilldock-data: