# Copyright (c) 2026 Huawei Technologies Co., Ltd.
# openFuyao is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#          http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.

FROM rust:1.87 AS rust-builder
WORKDIR /workspace/native/rdma-engine
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config librdmacm-dev libibverbs-dev rdma-core && rm -rf /var/lib/apt/lists/*
COPY native/rdma-engine ./
RUN cargo build --release

FROM golang:1.24.5-bookworm AS go-builder
WORKDIR /workspace

RUN apt-get update && apt-get install -y --no-install-recommends \
    pkg-config \
    librdmacm-dev \
    libibverbs-dev \
    rdma-core \
    && rm -rf /var/lib/apt/lists/*

COPY go.mod go.sum ./
RUN go mod download

COPY api ./api
COPY cmd ./cmd
COPY pkg ./pkg
COPY --from=rust-builder /workspace/native/rdma-engine/target/release/librdma_engine.a /usr/local/lib/librdma_engine.a

ENV CGO_ENABLED=1
ENV CGO_LDFLAGS="-L/usr/local/lib"
RUN GOOS=linux go build -tags rdma_native -o /out/node-agent ./cmd/node-agent

FROM debian:bookworm-slim
WORKDIR /
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    rdma-core \
    librdmacm1 \
    libibverbs1 \
    ibverbs-providers \
    && rm -rf /var/lib/apt/lists/*
COPY --from=go-builder /out/node-agent /usr/local/bin/node-agent

ENTRYPOINT ["/usr/local/bin/node-agent"]