Skip to content

Conversation

@moisesPompilio
Copy link
Contributor

Adds Docker support for building and testing LDK Server. Includes a multi-stage Dockerfile for optimized builds and a docker-compose.yml for a full testing environment with Bitcoin Core, CLN, and LND.

  1. Dockerfile: Multi-stage build with builder stage for Rust compilation (supports BUILD_FEATURES) and final stage for runtime. Exposes ports 3000 and 3001 for REST and Lightning connectivity.
  2. docker-compose.yml: Sets up a complete testing environment with Bitcoin Core in regtest mode, CLN (Core Lightning), and LND for Lightning Network interactions.
    • Default profile: Runs Bitcoin Core, CLN, LND (docker compose up).
    • ldk-server profile: Runs Bitcoin Core, CLN, LND, LDK Server (docker compose --profile ldk-server up).
    • rabbitmq profile: Runs Bitcoin Core, CLN, LND, RabbitMQ (docker compose --profile rabbitmq up).

this pr depends on #69

@ldk-reviews-bot
Copy link

ldk-reviews-bot commented Oct 17, 2025

👋 Thanks for assigning @tnull as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-reviews-bot
Copy link

🔔 1st Reminder

Hey @wpaulino! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@tnull tnull requested review from tnull and removed request for wpaulino October 21, 2025 15:33
@ldk-reviews-bot
Copy link

🔔 1st Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot
Copy link

🔔 2nd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot
Copy link

🔔 3rd Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@ldk-reviews-bot
Copy link

🔔 4th Reminder

Hey @tnull! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

Copy link
Collaborator

@tnull tnull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! Pretty much looks good to me!

One minor nit: please rewrite your commit messages to wrap at 72 characters. In general, feel free to consult https://cbea.ms/git-commit/ for guidance on how to write good commit messages.


bitcoin:
container_name: ldk-server-bitcoin
image: blockstream/bitcoind:29.1@sha256:9fcffa83feed0fc382dfb2f26990ca07656d150ba49434096a5aeedac6695a01
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be cool to go for v30 directly here, just pinged somebody from Blockstream to check if they intend to upgrade the Docker image soon.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, let’s wait for their feedback then.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And there it is: https://hub.docker.com/r/blockstream/bitcoind

Please update!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

Implements multi-stage build to produce a small
final image by discarding build dependencies.
Supports optional BUILD_FEATURES for additional
features, with cached compilation in builder stage.
Copy link
Collaborator

@tnull tnull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I think.

Happy to land this as soon as #69 lands.

introduces docker-compose.yml with Bitcoin Core,
CLN, and LND for Lightning testing. The default
profile runs these services; the 'ldk-server'
profile adds the LDK server; the 'rabbitmq'
profile includes RabbitMQ for events.
args:
BUILD_FEATURES: ""
command: [
"--node-listening-address=0.0.0.0:3001",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems weird for ldk-server we use the non-default 3001 but give the default 9735 to lnd

COPY --from=builder /opt/app/ldk-server/ldk-server-config.toml /usr/local/bin/ldk-server-config.toml
RUN chmod +x /usr/local/bin/ldk-server

EXPOSE 3000 3001
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should expose 9735


RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
RUN rustup default 1.90.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why use a debian container if you're just going to install rustup into it? why not just use the rust container

COPY --from=builder /opt/app/target/release/ldk-server /usr/local/bin/ldk-server
COPY --from=builder /opt/app/target/release/ldk-server-cli /usr/local/bin/ldk-server-cli
COPY --from=builder /opt/app/ldk-server/ldk-server-config.toml /usr/local/bin/ldk-server-config.toml
RUN chmod +x /usr/local/bin/ldk-server
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this needed? if it is should chmod the cli too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants