lnd.xprv/docs/DOCKER.md

2.6 KiB

Docker Instructions

Development/testing

For development or testing, or to spin up a btcd backend alongside lnd, check out the documentation at docker/README.md.

Production

To use Docker in a production environment, you can run lnd by first creating a Docker container, adding the appropriate command-line options as parameters.

$ docker create --name=lnd lightninglabs/lnd [command-line options]

Then, just start the container:

$ docker start lnd

Volumes

A Docker volume will be created with your .lnd directory automatically, and will persist through container restarts.

You can also optionally manually specify a local folder to be used as a volume:

$ docker create --name=lnd -v /media/lnd-docker/:/root/.lnd lightninglabs/lnd [command-line options]

Example

Here is an example testnet lnd that uses Neutrino:

$ docker create --name lnd-testnet lightninglabs/lnd --bitcoin.active --bitcoin.testnet --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community

Start the container:

$ docker start lnd-testnet

Create a wallet (and write down the seed):

$ docker exec -it lnd-testnet lncli create

Confirm lnd has begun to synchronize:

$ docker logs lnd-testnet
[snipped]
2018-05-01 02:28:01.201 [INF] RPCS: RPC server listening on 127.0.0.1:10009
2018-05-01 02:28:01.201 [INF] LTND: Waiting for chain backend to finish sync, start_height=2546
2018-05-01 02:28:01.201 [INF] RPCS: gRPC proxy started at 127.0.0.1:8080
2018-05-01 02:28:08.999 [INF] LNWL: Caught up to height 10000
2018-05-01 02:28:09.872 [INF] BTCN: Processed 10547 blocks in the last 10.23s (height 10547, 2012-05-28 05:02:32 +0000 UTC)

This is a simple example, it is possible to use any command-line options necessary to expose RPC ports, use btcd or bitcoind, or add additional chains.

LND Development and Testing

To test the Docker production image locally, run the following from the project root:

$ docker build . -t lnd:master

To choose a specific branch or tag instead, use the "checkout" build-arg. For example, to build the latest commits in master:

$ docker build . --build-arg checkout=v0.8.0-beta -t lnd:v0.8.0-beta

To build the image using the most current tag:

$ docker build . --build-arg checkout=$(git describe --tags `git rev-list --tags --max-count=1`) -t lnd:latest-tag

Once the image has been built and tagged locally, start the container:

docker run --name=lnd-testnet -it lnd:1.0 --bitcoin.active --bitcoin.testnet --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community