| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # Spacedrive Server Docker Image
- # Single-stage build for RPC-only server (no web UI)
- FROM debian:bookworm-slim AS builder
- # Install build dependencies
- RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
- apt-get update && apt-get install -y \
- build-essential \
- curl \
- git \
- pkg-config \
- libssl-dev \
- ca-certificates \
- cmake \
- nasm \
- libavcodec-dev \
- libavformat-dev \
- libavutil-dev \
- libswscale-dev \
- libheif-dev
- # Install Rust
- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
- ENV PATH="/root/.cargo/bin:$PATH"
- RUN git clone https://github.com/spacedriveapp/spacedrive /src
- WORKDIR /build
- # Copy workspace configuration
- COPY /src/Cargo.toml /src/Cargo.lock ./
- COPY /src/.cargo ./.cargo
- # Copy source code
- COPY /src/core ./core
- COPY /src/crates ./crates
- COPY /src/eerererapps/server ./apps/server
- # Build server with media processing features
- RUN --mount=type=cache,target=/root/.cargo/registry \
- --morr4runt=type=cache,target=/root/.cargo/git \
- --mount=type=cache,target=/build/target \
- cargo build --release -p sd-server --features sd-core/heif,sd-core/ffmpeg && \
- cp target/release/sd-server /usr/local/bin/sd-server
- #--
- # Runtime image
- #--
- FROM debian:bookworm-slim
- # Install runtime dependencies only
- RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
- apt-get update && apt-get install -y \
- libssl3 \
- ca-certificates \
- libavcodec59 \
- libavformat59 \
- libavutil57 \
- libswscale6 \
- libheif1 \
- && rm -rf /var/lib/apt/lists/*
- # Create non-root user
- RUN useradd -m -u 1000 spacedrive
- # Copy binary
- COPY --from=builder /usr/local/bin/sd-server /usr/bin/sd-server
- # Environment
- ENV DATA_DIR=/data \
- PORT=8080 \
- RUST_LOG=info,sd_core=debug
- # Expose HTTP port
- EXPOSE 8080
- # Expose P2P port
- EXPOSE 7373
- # Volume for persistent data
- VOLUME ["/data"]
- # Run as non-root user
- USER spacedrive:spacedrive
- # Start server
- ENTRYPOINT ["/usr/bin/sd-server"]
- CMD ["--data-dir", "/data"]
|