- Build with server, mcp, swagger, client, tls features (all except magic) - Add KEEP_* environment variable documentation and defaults - Copy CA certificates for HTTPS client support in scratch image - Add docker-compose.yml with keep-data and keep-config volumes
63 lines
1.6 KiB
Docker
63 lines
1.6 KiB
Docker
# Build stage
|
|
FROM rust:1.88-slim AS builder
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
cmake \
|
|
make \
|
|
gcc \
|
|
musl-tools \
|
|
pkg-config \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN rustup target add x86_64-unknown-linux-musl
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy manifests and fetch dependencies (cached layer)
|
|
COPY Cargo.toml Cargo.lock ./
|
|
RUN mkdir src && echo 'fn main() {}' > src/main.rs && echo '' > src/lib.rs
|
|
|
|
RUN cargo fetch --target x86_64-unknown-linux-musl
|
|
|
|
# Copy real source and build static binary
|
|
# magic feature excluded (requires shared libmagic; fallback uses `file` command)
|
|
COPY src/ src/
|
|
RUN cargo build --release --target x86_64-unknown-linux-musl \
|
|
--no-default-features --features lz4,gzip,server,mcp,swagger,client,tls \
|
|
&& strip target/x86_64-unknown-linux-musl/release/keep
|
|
|
|
# Runtime stage - scratch since binary is fully static
|
|
FROM scratch
|
|
|
|
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/keep /keep
|
|
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs/
|
|
|
|
EXPOSE 21080
|
|
|
|
# General options
|
|
# ENV KEEP_CONFIG=/config/config.yml
|
|
# Mount a volume for persistent storage: -v keep-data:/data
|
|
ENV KEEP_DIR=/data
|
|
ENV KEEP_LIST_FORMAT="id,time,size,tags,meta:hostname"
|
|
|
|
# Item options
|
|
# ENV KEEP_COMPRESSION=lz4
|
|
# ENV KEEP_META_PLUGINS=""
|
|
# ENV KEEP_FILTERS=""
|
|
|
|
# Server options
|
|
ENV KEEP_SERVER_ADDRESS=0.0.0.0
|
|
ENV KEEP_SERVER_PORT=21080
|
|
# ENV KEEP_SERVER_PASSWORD=""
|
|
# ENV KEEP_SERVER_PASSWORD_HASH=""
|
|
|
|
# TLS options
|
|
# ENV KEEP_SERVER_CERT=/certs/cert.pem
|
|
# ENV KEEP_SERVER_KEY=/certs/key.pem
|
|
|
|
# Client options
|
|
# ENV KEEP_CLIENT_URL=""
|
|
# ENV KEEP_CLIENT_PASSWORD=""
|
|
|
|
ENTRYPOINT ["/keep"]
|