NAC_Blockchain/nac-deploy/Dockerfile

67 lines
1.3 KiB
Docker

# 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"]