aboutsummaryrefslogtreecommitdiff
path: root/seaweedfs-rdma-sidecar/Dockerfile.rdma-engine
diff options
context:
space:
mode:
Diffstat (limited to 'seaweedfs-rdma-sidecar/Dockerfile.rdma-engine')
-rw-r--r--seaweedfs-rdma-sidecar/Dockerfile.rdma-engine63
1 files changed, 63 insertions, 0 deletions
diff --git a/seaweedfs-rdma-sidecar/Dockerfile.rdma-engine b/seaweedfs-rdma-sidecar/Dockerfile.rdma-engine
new file mode 100644
index 000000000..539a71bd1
--- /dev/null
+++ b/seaweedfs-rdma-sidecar/Dockerfile.rdma-engine
@@ -0,0 +1,63 @@
+# 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\""