Skip to content

Commit f1f00cb

Browse files
benthecarmanclaude
andcommitted
Add Dockerfile
Multi-stage build with dependency caching for faster rebuilds. Includes both ldk-server and ldk-server-cli binaries. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e3f6b83 commit f1f00cb

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
target/
2+
.git/
3+
.github/
4+
.claude/
5+
e2e-tests/
6+
*.md

Dockerfile

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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

Comments
 (0)