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
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							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\""
 |