|
| 1 | +FROM rust:1.85 AS builder |
| 2 | + |
| 3 | +WORKDIR /app |
| 4 | + |
| 5 | +# Copy manifests and lock file first for dependency caching |
| 6 | +COPY Cargo.toml Cargo.lock ./ |
| 7 | +COPY ldk-server/Cargo.toml ldk-server/Cargo.toml |
| 8 | +COPY ldk-server-cli/Cargo.toml ldk-server-cli/Cargo.toml |
| 9 | +COPY ldk-server-client/Cargo.toml ldk-server-client/Cargo.toml |
| 10 | +COPY ldk-server-protos/Cargo.toml ldk-server-protos/Cargo.toml |
| 11 | +COPY ldk-server-protos/build.rs ldk-server-protos/build.rs |
| 12 | + |
| 13 | +# Create dummy source files so cargo can resolve and build dependencies |
| 14 | +RUN mkdir -p ldk-server/src ldk-server-cli/src ldk-server-client/src ldk-server-protos/src \ |
| 15 | + && echo "fn main() {}" > ldk-server/src/main.rs \ |
| 16 | + && echo "fn main() {}" > ldk-server-cli/src/main.rs \ |
| 17 | + && echo "" > ldk-server-client/src/lib.rs \ |
| 18 | + && echo "" > ldk-server-protos/src/lib.rs |
| 19 | + |
| 20 | +# Build dependencies only (this layer is cached unless Cargo.toml/Cargo.lock change) |
| 21 | +RUN cargo build --release -p ldk-server --all-features \ |
| 22 | + && cargo build --release -p ldk-server-cli |
| 23 | + |
| 24 | +# Copy real source and rebuild |
| 25 | +COPY . . |
| 26 | +RUN touch ldk-server/src/main.rs ldk-server-cli/src/main.rs \ |
| 27 | + ldk-server-client/src/lib.rs ldk-server-protos/src/lib.rs \ |
| 28 | + && cargo build --release -p ldk-server --all-features \ |
| 29 | + && cargo build --release -p ldk-server-cli |
| 30 | + |
| 31 | +FROM debian:bookworm-slim |
| 32 | + |
| 33 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 34 | + ca-certificates \ |
| 35 | + && rm -rf /var/lib/apt/lists/* |
| 36 | + |
| 37 | +COPY --from=builder /app/target/release/ldk-server /usr/local/bin/ldk-server |
| 38 | +COPY --from=builder /app/target/release/ldk-server-cli /usr/local/bin/ldk-server-cli |
| 39 | + |
| 40 | +EXPOSE 9735 3002 |
| 41 | + |
| 42 | +ENTRYPOINT ["ldk-server"] |
0 commit comments