Skip to content

Commit 62ef9c9

Browse files
authored
Merge pull request #154 from benthecarman/docker
2 parents c276646 + 1a7d9e4 commit 62ef9c9

2 files changed

Lines changed: 83 additions & 0 deletions

File tree

.dockerignore

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
target/
2+
**/target/
3+
.git/
4+
.gitignore
5+
.github/
6+
.claude/
7+
.idea/
8+
.vscode/
9+
e2e-tests/
10+
contrib/
11+
scripts/
12+
rustfmt.toml
13+
bacon.toml
14+
.run.sh
15+
.DS_Store
16+
.env
17+
.env.*
18+
*.log
19+
*.tmp
20+
*.md
21+
!ldk-server-client/README.md
22+
!ldk-server-grpc/README.md

Dockerfile

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

Comments
 (0)