|
| 1 | +FROM rust:1.85 AS builder |
| 2 | + |
| 3 | +WORKDIR /app |
| 4 | +ARG ENABLE_LSPS2=false |
| 5 | + |
| 6 | +# Copy manifests and lock file first for dependency caching |
| 7 | +COPY Cargo.toml Cargo.lock ./ |
| 8 | +COPY ldk-server/Cargo.toml ldk-server/Cargo.toml |
| 9 | +COPY ldk-server-cli/Cargo.toml ldk-server-cli/Cargo.toml |
| 10 | +COPY ldk-server-client/Cargo.toml ldk-server-client/Cargo.toml |
| 11 | +COPY ldk-server-grpc/Cargo.toml ldk-server-grpc/Cargo.toml |
| 12 | +COPY ldk-server-grpc/build.rs ldk-server-grpc/build.rs |
| 13 | +COPY ldk-server-mcp/Cargo.toml ldk-server-mcp/Cargo.toml |
| 14 | + |
| 15 | +# Create dummy source files so cargo can resolve and build dependencies |
| 16 | +RUN mkdir -p ldk-server/src ldk-server-cli/src ldk-server-client/src ldk-server-grpc/src ldk-server-mcp/src \ |
| 17 | + && echo "fn main() {}" > ldk-server/src/main.rs \ |
| 18 | + && echo "fn main() {}" > ldk-server-cli/src/main.rs \ |
| 19 | + && echo "" > ldk-server-client/src/lib.rs \ |
| 20 | + && echo "" > ldk-server-grpc/src/lib.rs \ |
| 21 | + && echo "fn main() {}" > ldk-server-mcp/src/main.rs |
| 22 | + |
| 23 | +# Build dependencies only (this layer is cached unless Cargo.toml/Cargo.lock change) |
| 24 | +RUN if [ "$ENABLE_LSPS2" = "true" ]; then \ |
| 25 | + cargo build --release --locked --features experimental-lsps2-support \ |
| 26 | + -p ldk-server \ |
| 27 | + -p ldk-server-cli; \ |
| 28 | + else \ |
| 29 | + cargo build --release --locked \ |
| 30 | + -p ldk-server \ |
| 31 | + -p ldk-server-cli; \ |
| 32 | + fi |
| 33 | + |
| 34 | +# Copy real source and rebuild |
| 35 | +COPY . . |
| 36 | +RUN touch ldk-server/src/main.rs ldk-server-cli/src/main.rs \ |
| 37 | + ldk-server-client/src/lib.rs ldk-server-grpc/src/lib.rs \ |
| 38 | + && if [ "$ENABLE_LSPS2" = "true" ]; then \ |
| 39 | + cargo build --release --locked --features experimental-lsps2-support \ |
| 40 | + -p ldk-server \ |
| 41 | + -p ldk-server-cli; \ |
| 42 | + else \ |
| 43 | + cargo build --release --locked \ |
| 44 | + -p ldk-server \ |
| 45 | + -p ldk-server-cli; \ |
| 46 | + fi |
| 47 | + |
| 48 | +FROM debian:bookworm-slim |
| 49 | + |
| 50 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 51 | + ca-certificates \ |
| 52 | + && rm -rf /var/lib/apt/lists/* |
| 53 | + |
| 54 | +COPY --from=builder /app/target/release/ldk-server /usr/local/bin/ldk-server |
| 55 | +COPY --from=builder /app/target/release/ldk-server-cli /usr/local/bin/ldk-server-cli |
| 56 | + |
| 57 | +ENV LDK_SERVER_NODE_GRPC_SERVICE_ADDRESS=0.0.0.0:3536 |
| 58 | + |
| 59 | +EXPOSE 9735 3536 |
| 60 | + |
| 61 | +ENTRYPOINT ["ldk-server"] |
0 commit comments