Docker 容器化部署
使用 Docker Compose 部署 HashRelay 服务端和客户端。
支持的安装方式是 shell 安装脚本。仓库里没有一份长期维护的 Compose 文件。部署文档里有一段 Dockerfile 草稿,但草稿仍然发布旧的 8443/8444 端口。请用现在安装脚本和 server.toml.example 里的端口。
镜像
dockerfile
FROM rust:1.85-slim AS builder
WORKDIR /app
COPY . .
RUN cargo build -p server --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/hr-server /usr/local/bin/hr-server
ENTRYPOINT ["hr-server", "--config", "/etc/hash-relay/server.toml"]运行
挂上真实的 server.toml,以及存放 SQLite 和证书的数据目录。发布 TCP 8555、UDP 9555,以及你设置的管理端口(默认 8585)。
yaml
services:
hr-server:
image: hash-relay-server
restart: unless-stopped
ports:
- "8555:8555"
- "9555:9555/udp"
- "8585:8585"
volumes:
- ./server.toml:/etc/hash-relay/server.toml:ro
- ./data:/var/lib/hash-relay
environment:
RUST_LOG: info容器里面,[server.database] 的 url 和 [server.enc] 的 cache_dir 必须指向挂载的数据目录,不能写到容器退出就消失的路径上。[server.api] 的监听地址要和你发布 8585 的方式一致。部署文档里的健康检查是 API 端口上的 GET /api/v1/system/health。
客户端容器也是同样的思路:hr-client、client.toml,以及 host 网络或为每个矿机映射发布的监听端口。多数矿场应把客户端装在矿机所在的局域网里,用安装脚本,而不是放进矿机路由不到的云端容器。