98 lines
3.1 KiB
YAML
98 lines
3.1 KiB
YAML
name: rcoder
|
||
services:
|
||
rcoder:
|
||
image: ${RCODER_IMAGE:-nuwax-docker-images-registry.cn-hangzhou.cr.aliyuncs.com/dev/master-rcoder:latest}
|
||
ports:
|
||
- "${RCODER_PORT:-8090}:${RCODER_PORT:-8090}"
|
||
- "8088:8088" # Pingora 反向代理端口(VNC 代理、健康检查等)
|
||
- "60001:60000"
|
||
- "8199:80"
|
||
environment:
|
||
- TZ=Asia/Shanghai
|
||
- RCODER_PORT=${RCODER_PORT:-8090}
|
||
- RUST_LOG=debug # 设置调试日志级别
|
||
# 🎯 关键:获取docker sock,用于检测宿主机路径
|
||
- DOCKER_SOCKET_PATH=${DOCKER_SOCKET_PATH:-/var/run/docker.sock}
|
||
volumes:
|
||
# 挂载 Docker socket
|
||
- ${DOCKER_SOCKET_PATH:-/var/run/docker.sock}:/var/run/docker.sock
|
||
# 🎯 挂载本地测试配置文件(使用与主容器相同的镜像)
|
||
- ./config.yml:/app/config.yml
|
||
# 挂载项目工作目录 - 这是关键的挂载!
|
||
- ./project_workspace:/app/project_workspace
|
||
# 挂载 computer 项目工作目录
|
||
- ./computer-project-workspace:/app/computer-project-workspace
|
||
# 挂载工作目录
|
||
- ./logs/:/app/logs
|
||
# 挂载启动脚本
|
||
- ./start-rcoder.sh:/app/start-rcoder.sh
|
||
# 专门用于npm,pnpm,bun,uvx 缓存使用的目录
|
||
- ./computer-cache:/root/.cache
|
||
# 🖼️ 挂载壁纸目录(供 agent_runner 子容器使用)
|
||
# - ./wallpaper:/app/assets
|
||
command: ["/bin/bash", "/app/start-rcoder.sh"]
|
||
healthcheck:
|
||
test:
|
||
["CMD", "curl", "-f", "http://localhost:${RCODER_PORT:-8090}/health"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 60s
|
||
restart: always
|
||
|
||
# Pyroscope Server - 持续剖析数据存储和可视化
|
||
pyroscope:
|
||
image: grafana/pyroscope:latest
|
||
container_name: rcoder-pyroscope
|
||
ports:
|
||
- "4040:4040" # Web UI
|
||
environment:
|
||
- TZ=Asia/Shanghai
|
||
volumes:
|
||
- pyroscope-data:/data
|
||
command:
|
||
- server
|
||
restart: unless-stopped
|
||
|
||
# Prometheus Server - 时序数据库,存储常规指标
|
||
prometheus:
|
||
image: prom/prometheus:latest
|
||
container_name: rcoder-prometheus
|
||
command:
|
||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||
- "--storage.tsdb.path=/prometheus"
|
||
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
|
||
- "--web.console.templates=/usr/share/prometheus/consoles"
|
||
- "--web.enable-lifecycle"
|
||
ports:
|
||
- "9091:9090" # 宿主机 9091 → 容器 9090(避免端口冲突)
|
||
volumes:
|
||
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||
- prometheus-data:/prometheus
|
||
environment:
|
||
- TZ=Asia/Shanghai
|
||
restart: unless-stopped
|
||
|
||
# Grafana - 可视化平台
|
||
grafana:
|
||
image: grafana/grafana:latest
|
||
container_name: rcoder-grafana
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
- GF_SECURITY_ADMIN_USER=admin
|
||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||
- GF_USERS_ALLOW_SIGN_UP=false
|
||
- TZ=Asia/Shanghai
|
||
volumes:
|
||
- grafana-data:/var/lib/grafana
|
||
- ./grafana/provisioning:/etc/grafana/provisioning:ro
|
||
depends_on:
|
||
- prometheus
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
pyroscope-data:
|
||
prometheus-data:
|
||
grafana-data:
|