# NAC公链节点Dockerfile # 多阶段构建优化镜像大小 # 构建阶段 FROM rust:1.75-slim as builder WORKDIR /build # 安装构建依赖 RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ && rm -rf /var/lib/apt/lists/* # 复制Cargo文件 COPY Cargo.toml Cargo.lock ./ COPY nac-*/Cargo.toml ./nac-*/ # 构建依赖(缓存层) RUN mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release && rm -rf src # 复制源代码 COPY . . # 构建应用 RUN cargo build --release --bin nac-node # 运行阶段 FROM debian:bookworm-slim WORKDIR /app # 安装运行时依赖 RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ && rm -rf /var/lib/apt/lists/* # 从构建阶段复制二进制文件 COPY --from=builder /build/target/release/nac-node /usr/local/bin/ # 创建数据目录 RUN mkdir -p /data/nac # 设置环境变量 ENV NAC_DATA_DIR=/data/nac ENV NAC_LOG_LEVEL=info ENV RUST_LOG=info # 暴露端口 EXPOSE 8545 8546 30303 30303/udp # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD nac-node health || exit 1 # 设置用户 RUN useradd -r -u 1000 -m nac USER nac # 挂载点 VOLUME ["/data/nac"] # 启动命令 ENTRYPOINT ["nac-node"] CMD ["start", "--config", "/data/nac/config.toml"]