You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.6 KiB

# Multi-stage build for Rust RDMA Engine
FROM rust:1.80-slim AS builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
libudev-dev \
build-essential \
libc6-dev \
linux-libc-dev \
&& rm -rf /var/lib/apt/lists/*
# Set work directory
WORKDIR /app
# Copy Rust project files
COPY rdma-engine/Cargo.toml ./
COPY rdma-engine/Cargo.lock ./
COPY rdma-engine/src ./src
# Build the release binary
RUN cargo build --release
# Runtime stage
FROM debian:bookworm-slim
# Install runtime dependencies
RUN apt-get update && apt-get install -y \
ca-certificates \
libssl3 \
curl \
&& rm -rf /var/lib/apt/lists/*
# Create app user
RUN useradd -m -u 1001 appuser
# Set work directory
WORKDIR /app
# Copy binary from builder stage
COPY --from=builder /app/target/release/rdma-engine-server .
# Change ownership
RUN chown -R appuser:appuser /app
# Set default socket path (can be overridden)
ENV RDMA_SOCKET_PATH=/tmp/rdma/rdma-engine.sock
# Create socket directory with proper permissions (before switching user)
RUN mkdir -p /tmp/rdma && chown -R appuser:appuser /tmp/rdma
USER appuser
# Expose any needed ports (none for this service as it uses Unix sockets)
# EXPOSE 18515
# Health check - verify both process and socket using environment variable
HEALTHCHECK --interval=5s --timeout=3s --start-period=10s --retries=3 \
CMD pgrep rdma-engine-server >/dev/null && test -S "$RDMA_SOCKET_PATH"
# Default command using environment variable
CMD sh -c "./rdma-engine-server --debug --ipc-socket \"$RDMA_SOCKET_PATH\""