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
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.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
)
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.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.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.13.993-exp
(tap/Dockerfile)0.13.992-exp
(tap/Dockerfile)0.13.991-exp
(tap/Dockerfile)0.13.99-exp
(tap/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
).
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.json
file- add the new version to the
versions
array of the associated implementation - update the
latest
property of the implementation if necessary - increment the root-level
version
number by1
- add the new version to the
- Update the
src/utils/constants.ts
file
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