| 1 |
# Test Dockerfile for ZephyrFS Node |
| 2 |
FROM rust:1.75-slim as builder |
| 3 |
|
| 4 |
# Install dependencies |
| 5 |
RUN apt-get update && apt-get install -y \ |
| 6 |
pkg-config \ |
| 7 |
libssl-dev \ |
| 8 |
protobuf-compiler \ |
| 9 |
&& rm -rf /var/lib/apt/lists/* |
| 10 |
|
| 11 |
WORKDIR /app |
| 12 |
|
| 13 |
# Copy source code |
| 14 |
COPY . . |
| 15 |
|
| 16 |
# Build the application |
| 17 |
RUN cargo build --release |
| 18 |
|
| 19 |
# Runtime stage |
| 20 |
FROM debian:bookworm-slim |
| 21 |
|
| 22 |
# Install runtime dependencies |
| 23 |
RUN apt-get update && apt-get install -y \ |
| 24 |
ca-certificates \ |
| 25 |
wget \ |
| 26 |
&& rm -rf /var/lib/apt/lists/* |
| 27 |
|
| 28 |
WORKDIR /app |
| 29 |
|
| 30 |
# Copy binary from builder |
| 31 |
COPY --from=builder /app/target/release/zephyrfs-node . |
| 32 |
|
| 33 |
# Create data directory |
| 34 |
RUN mkdir -p /data |
| 35 |
|
| 36 |
# Set environment variables |
| 37 |
ENV RUST_LOG=debug |
| 38 |
ENV RUST_BACKTRACE=1 |
| 39 |
|
| 40 |
# Expose ports |
| 41 |
EXPOSE 4001 8080 |
| 42 |
|
| 43 |
# Health check |
| 44 |
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ |
| 45 |
CMD ./zephyrfs-node health-check || exit 1 |
| 46 |
|
| 47 |
# Run the node |
| 48 |
CMD ["./zephyrfs-node", "start"] |