The Dockerfiles used to build the images that the Polar app needs to spin up nodes quickly across multiple operating systems.
Warning: These images are not hardened and shouldn't be used to store real bitcoin. These images are intended solely to be used in regtest environments
Creating multi-arch images for Polar makes use of the docker buildx command. It is a good idea to create a separate builder using the commands below.
// create the builder
$ docker buildx create --use --name polar-builder
// use the builder
$ docker buildx use polar-builder
// bootstrap the builder
$ docker buildx inspect --bootstrap
30.0(bitcoind/Dockerfile)29.0(bitcoind/Dockerfile)28.0(bitcoind/Dockerfile)27.0(bitcoind/Dockerfile)26.0(bitcoind/Dockerfile)25.0(bitcoind/Dockerfile)24.0(bitcoind/Dockerfile)23.0(bitcoind/Dockerfile)22.0(bitcoind/Dockerfile)0.21.1(bitcoind/Dockerfile)0.21.0(bitcoind/Dockerfile)0.20.1(bitcoind/Dockerfile)0.20.0(bitcoind/Dockerfile)0.19.1(bitcoind/Dockerfile)0.19.0.1(bitcoind/Dockerfile)0.18.1(bitcoind/Dockerfile)
Building the image
$ cd bitcoind
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg BITCOIN_VERSION=<version> -t polarlightning/bitcoind:<version> --push .Replace <version> with the desired bitcoind version (ex: 0.18.1)
0.20.0-beta(lnd/Dockerfile)0.19.3-beta(lnd/Dockerfile)0.19.2-beta(lnd/Dockerfile)0.19.1-beta(lnd/Dockerfile)0.19.0-beta(lnd/Dockerfile)0.18.5-beta(lnd/Dockerfile)0.18.4-beta(lnd/Dockerfile)0.18.3-beta(lnd/Dockerfile)0.18.2-beta(lnd/Dockerfile)0.18.1-beta(lnd/Dockerfile)0.18.0-beta(lnd/Dockerfile)0.17.5-beta(lnd/Dockerfile)0.17.4-beta(lnd/Dockerfile)0.17.3-beta(lnd/Dockerfile)0.17.2-beta(lnd/Dockerfile)0.17.1-beta(lnd/Dockerfile)0.17.0-beta(lnd/Dockerfile)0.16.4-beta(lnd/Dockerfile)0.16.2-beta(lnd/Dockerfile)0.16.1-beta(lnd/Dockerfile)0.16.0-beta(lnd/Dockerfile)0.15.5-beta(lnd/Dockerfile)0.15.4-beta(lnd/Dockerfile)0.15.3-beta(lnd/Dockerfile)0.15.2-beta(lnd/Dockerfile)0.15.1-beta(lnd/Dockerfile)0.15.0-beta(lnd/Dockerfile)0.14.3-beta(lnd/Dockerfile)0.14.2-beta(lnd/Dockerfile)0.14.1-beta(lnd/Dockerfile)0.13.1-beta(lnd/Dockerfile)0.13.0-beta(lnd/Dockerfile)0.12.1-beta(lnd/Dockerfile)0.12.0-beta(lnd/Dockerfile)0.11.1-beta(lnd/Dockerfile)0.11.0-beta(lnd/Dockerfile)0.10.3-beta(lnd/Dockerfile)0.10.2-beta(lnd/Dockerfile)0.10.1-beta(lnd/Dockerfile)0.10.0-beta(lnd/Dockerfile)0.9.1-beta(lnd/Dockerfile)0.9.0-beta(lnd/Dockerfile)0.8.2-beta(lnd/Dockerfile)0.8.0-beta(lnd/Dockerfile)0.7.1-beta(lnd/Dockerfile)
Building the image
$ cd lnd
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg LND_VERSION=<version> -t polarlightning/lnd:<version> --push .Replace <version> with the desired LND version (ex: 0.7.1-beta)
25.12(clightning/Dockerfile)25.09.3(clightning/Dockerfile)25.05(clightning/Dockerfile)25.02.2(clightning/Dockerfile)25.02(clightning/Dockerfile)24.11.1(clightning/Dockerfile)24.11(clightning/Dockerfile)24.08.1(clightning/Dockerfile)24.08(clightning/Dockerfile)24.05(clightning/Dockerfile)24.02.2(clightning/Dockerfile)23.11.2(clightning/Dockerfile)23.05.2(clightning/Dockerfile)23.02.2(clightning/Dockerfile)22.11(clightning/Dockerfile)0.12.0(clightning/Dockerfile)0.11.2(clightning/Dockerfile)0.11.1(clightning/Dockerfile)0.10.2(clightning/Dockerfile)0.10.0(clightning/Dockerfile)0.9.3(clightning/Dockerfile)0.9.2(clightning/Dockerfile)0.9.1(clightning/Dockerfile)0.9.0(clightning/Dockerfile)0.8.2(clightning/Dockerfile)0.8.1(clightning/Dockerfile)0.8.0(clightning/Dockerfile)
Building the image
$ cd clightning
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg CLN_VERSION=<version> -t polarlightning/clightning:<version> --push .Replace <version> with the desired c-lightning version (ex: 0.8.0).
0.13.1(eclair/Dockerfile)0.12.0(eclair/Dockerfile)0.11.0(eclair/Dockerfile)0.10.0(eclair/Dockerfile)0.9.0(eclair/Dockerfile)0.8.0(eclair/Dockerfile)0.7.0(eclair/Dockerfile)0.6.2(eclair/Dockerfile)0.6.1(eclair/Dockerfile)0.6.0(eclair/Dockerfile)0.5.0(eclair/Dockerfile)0.4.2(eclair/Dockerfile)0.3.3(eclair/Dockerfile)
Building the image
$ cd eclair
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg ECLAIR_VERSION=<version> -t polarlightning/eclair:<version> --push .Replace <version> with the desired Eclair version (ex: 0.3.3).
0.7.0-alpha(tap/Dockerfile)0.6.1-alpha(tap/Dockerfile)0.6.0-alpha(tap/Dockerfile)0.5.1-alpha(tap/Dockerfile)0.5.0-alpha(tap/Dockerfile)0.4.1-alpha(tap/Dockerfile)0.4.0-alpha(tap/Dockerfile)0.3.3-alpha(tap/Dockerfile)0.3.2-alpha(tap/Dockerfile)0.3.1-alpha(tap/Dockerfile)0.3.0-alpha(tap/Dockerfile)0.2.3-alpha(tap/Dockerfile)0.2.2-alpha(tap/Dockerfile)0.2.0-alpha(tap/Dockerfile)
Building the image
$ cd tapd
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg TAPD_VERSION=<version> -t polarlightning/tapd:<version> --push .Replace <version> with the desired Tap version (ex: 0.2.0-alpha).
0.16.0-alpha(litd/Dockerfile)0.15.3-alpha(litd/Dockerfile)0.15.1-alpha(litd/Dockerfile)0.15.0-alpha(litd/Dockerfile)0.14.1-alpha(litd/Dockerfile)0.14.0-alpha(litd/Dockerfile)
Building the image
$ cd litd
$ docker buildx build --platform linux/amd64,linux/arm64 --build-arg LITD_VERSION=<version> -t polarlightning/litd:<version> --push .Replace <version> with the desired Tap version (ex: 0.13.3-alpha).
0.2.5(simln/Dockerfile)
Building the image
$ cd simln
$ docker buildx build --platform linux/amd64, linux/arm64 --build-arg SIMLN_VERSION=<version> -t polarlightning/simln:<version> --push .Replace <version> with the desired SimLN version (ex: 0.2.5).
Note: These steps can only be performed by developers with commit access to this GitHub repo and push access to the Docker Hub repo
These docker images can be updated in-between Polar releases. This allows developers to use the latest Bitcoin & Lightning versions shortly after they are released, without needing to download and install a new version of Polar.
To make new docker image versions available:
- Build the new docker image using the commands above
- Push the image to Docker Hub
- Update the
docker/nodes.jsonfile- add the new version to the
versionsarray of the associated implementation - update the
latestproperty of the implementation if necessary - increment the root-level
versionnumber by1
- add the new version to the
- Update the
src/utils/constants.tsfile
Once the updated nodes.json file is committed to master, the new images can be used in Polar by following these steps:
- Create a Network or view an existing Network
- In the Network Designer sidebar, click on the Show All Versions toggle
- At the bottom of the node list, click on the Check for new Node Versions link
- A dialog will open displaying the new versions available
- Click the Add New Versions button to begin using them