返回教程列表

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 网络或为每个矿机映射发布的监听端口。多数矿场应把客户端装在矿机所在的局域网里,用安装脚本,而不是放进矿机路由不到的云端容器。