
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本指南涵盖在多种环境下使用Docker部署Countly MCP服务器的方法。
最快的启动方式:
bash# 1. 克隆仓库并进入目录 git clone https://github.com/countly/countly-mcp-server.git cd countly-mcp-server # 2. 运行快速启动脚本 ./docker-start.sh
脚本将引导您完成:
bashdocker pull countly/countly-mcp-server:latest
bashdocker run -d \ --name countly-mcp-server \ -p 3000:3000 \ -e COUNTLY_SERVER_URL=https://your-countly-instance.com \ -e COUNTLY_AUTH_TOKEN=your-token-here \ countly/countly-mcp-server:latest
bash# 带标签构建 docker build -t countly-mcp-server:local . # 带特定版本构建 docker build -t countly-mcp-server:1.0.0 .
bashdocker run -d \ --name countly-mcp-server \ -p 3000:3000 \ -e COUNTLY_SERVER_URL=https://your-countly-instance.com \ -e COUNTLY_AUTH_TOKEN=your-token-here \ countly-mcp-server:local
创建令牌文件:
bashecho "your-auth-token" > countly_token.txt chmod 600 countly_token.txt
创建/编辑.env文件:
bashcp .env.example .env # 在.env中编辑COUNTLY_SERVER_URL
启动服务:
bashdocker-compose up -d
yaml# docker-compose.dev.yml version: '3.8' services: countly-mcp-server: build: context: . dockerfile: Dockerfile volumes: - ./src:/app/src:ro - ./package.json:/app/package.json:ro environment: - COUNTLY_SERVER_URL=${COUNTLY_SERVER_URL} - COUNTLY_AUTH_TOKEN=${COUNTLY_AUTH_TOKEN} ports: - "3000:3000" command: npm run dev
运行命令:
bashdocker-compose -f docker-compose.dev.yml up
提供的docker-compose.yml使用Docker Secrets:
bash# 启动带Secrets的服务 docker-compose up -d # 查看日志 docker-compose logs -f # 检查状态 docker-compose ps # 停止服务 docker-compose down
bashdocker swarm init
bashecho "your-auth-token" | docker secret create countly_token -
bash# 更新docker-compose.yml以使用外部Secret # 然后部署 docker stack deploy -c docker-compose.yml countly
bash# 列出服务 docker service ls # 查看日志 docker service logs countly_countly-mcp-server # 扩展服务 docker service scale countly_countly-mcp-server=3 # 删除Stack docker stack rm countly
bashkubectl create namespace countly-mcp
bashkubectl create secret generic countly-token \ --from-literal=token=your-auth-token \ -n countly-mcp
yaml# kubernetes-deployment.yml apiVersion: v1 kind: ConfigMap metadata: name: countly-mcp-config namespace: countly-mcp data: COUNTLY_SERVER_URL: "https://your-countly-instance.com" COUNTLY_TIMEOUT: "30000" --- apiVersion: apps/v1 kind: Deployment metadata: name: countly-mcp-server namespace: countly-mcp labels: app: countly-mcp-server spec: replicas: 2 selector: matchLabels: app: countly-mcp-server template: metadata: labels: app: countly-mcp-server spec: containers: - name: countly-mcp-server image: countly/countly-mcp-server:latest imagePullPolicy: Always ports: - containerPort: 3000 name: http env: - name: COUNTLY_SERVER_URL valueFrom: configMapKeyRef: name: countly-mcp-config key: COUNTLY_SERVER_URL - name: COUNTLY_TIMEOUT valueFrom: configMapKeyRef: name: countly-mcp-config key: COUNTLY_TIMEOUT - name: COUNTLY_AUTH_TOKEN_FILE value: "/run/secrets/countly_token" volumeMounts: - name: token mountPath: /run/secrets readOnly: true livenessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 10 periodSeconds: 30 readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 5 periodSeconds: 10 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi volumes: - name: token secret: secretName: countly-token items: - key: token path: countly_token --- apiVersion: v1 kind: Service metadata: name: countly-mcp-server namespace: countly-mcp spec: selector: app: countly-mcp-server ports: - name: http port: 3000 targetPort: 3000 type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: countly-mcp-server namespace: countly-mcp annotations: kubernetes.io/ingress.class: nginx spec: rules: - host: countly-mcp.yourdomain.com http: paths: - path: / pathType: Prefix backend: service: name: countly-mcp-server port: number: 3000
bashkubectl apply -f kubernetes-deployment.yml # 检查状态 kubectl get pods -n countly-mcp kubectl get svc -n countly-mcp # 查看日志 kubectl logs -f deployment/countly-mcp-server -n countly-mcp
| 变量 | 描述 | 默认值 |
|---|---|---|
COUNTLY_SERVER_URL | Countly服务器URL | https://api.count.ly |
COUNTLY_AUTH_TOKEN | 直接认证令牌 | - |
COUNTLY_AUTH_TOKEN_FILE | 令牌文件路径 | - |
COUNTLY_TIMEOUT | 请求超时时间(毫秒) | 30000 |
用于令牌文件或自定义配置:
bashdocker run -d \ -v $(pwd)/countly_token.txt:/run/secrets/countly_token:ro \ -v $(pwd)/custom.env:/app/.env:ro \ -e COUNTLY_AUTH_TOKEN_FILE=/run/secrets/countly_token \ countly-mcp-server
Docker镜像包含健康检查:
bash# 检查容器健康状态 docker ps # 手动健康检查 curl http://localhost:3000/health
响应:
json{ "status": "healthy", "timestamp": "2025-10-10T12:00:00.000Z" }
覆盖默认健康检查:
yamlhealthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s
bash# 查看日志 docker logs countly-mcp-server # 检查端口是否被占用 lsof -i :3000 # 前台运行以调试 docker run -it --rm \ -p 3000:3000 \ -e COUNTLY_SERVER_URL=https://your-instance.com \ -e COUNTLY_AUTH_TOKEN=your-token \ countly-mcp-server
bash# 验证令牌 docker exec countly-mcp-server cat /run/secrets/countly_token # 手动测试令牌 curl "https://your-instance.com/o/apps/mine?auth_token=your-token"
bash# 从容器内部测试 docker exec countly-mcp-server wget -O- http://localhost:3000/health # 检查网络 docker network ls docker network inspect bridge
bash# 检查资源使用情况 docker stats countly-mcp-server # 增加内存限制 docker run -m 1g countly-mcp-server # 或在docker-compose.yml中设置 deploy: resources: limits: memory: 1G
启用详细日志运行:
bashdocker run -it --rm \ -e NODE_ENV=development \ -e DEBUG=* \ countly-mcp-server
latestbash# 保护令牌文件 chmod 600 countly_token.txt chown 1001:1001 countly_token.txt # 匹配容器用户
bash# 创建隔离网络 docker network create --internal countly-network docker run --network countly-network countly-mcp-server
bashdocker run --read-only \ --tmpfs /tmp \ countly-mcp-server
扩展服务器添加指标端点:
yaml# docker-compose.monitoring.yml services: prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" grafana: image: grafana/grafana ports: - "3001:3000"
yamllogging: driver: "fluentd" options: fluentd-address: localhost:24224 tag: countly-mcp-server
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务