Browse Source

feat(docker): add initial Dockerfile for c-lightning

master
jamaljsr 5 years ago
parent
commit
e59ad80b70
  1. 22
      docker/README.md
  2. 31
      docker/clightning/Dockerfile
  3. 31
      docker/clightning/docker-entrypoint.sh

22
docker/README.md

@ -48,3 +48,25 @@ Replace `<version>` with the desired LND version (ex: `0.8.0-beta`)
$ docker push polarlightning/lnd:<version>
$ docker push polarlightning/lnd:latest
```
## c-lightning
### Tags
- `0.7.3`, `latest` ([lnd/Dockerfile](https://github.com/jamaljsr/polar/blob/master/docker/clightning/Dockerfile))
**Building the image**
```sh
$ cd clightning
$ docker build --build-arg CLN_VERSION=<version> --build-arg BITCOIN_VERSION=0.18.1 -t polarlightning/clightning:latest -t polarlightning/clightning:<version> .
```
Replace `<version>` with the desired c-lightning version (ex: `0.7.3`). c-lightning requires `bitcoin-cli` >= v0.16.1 on the same machine, so the bitcoin version can be specified as a build arg as well.
**Push to Docker Hub**
```sh
$ docker push polarlightning/clightning:<version>
$ docker push polarlightning/clightning:latest
```

31
docker/clightning/Dockerfile

@ -0,0 +1,31 @@
FROM ubuntu:18.04
ARG CLN_VERSION
# bitcoin-cli is required for c-lightning
ARG BITCOIN_VERSION
ENV PATH=/opt/bitcoin-${BITCOIN_VERSION}/bin:$PATH
RUN apt-get update -y \
&& apt-get install -y curl gosu wait-for-it xz-utils libsodium-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN curl -SLO https://bitcoin.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-x86_64-linux-gnu.tar.gz \
&& tar -xzf *.tar.gz -C /opt \
&& rm *.tar.gz
RUN curl -SLO https://github.com/ElementsProject/lightning/releases/download/v${CLN_VERSION}/clightning-v${CLN_VERSION}-Ubuntu-18.04.tar.xz \
&& tar -xf *.tar.xz -C / \
&& rm *.tar.xz
COPY docker-entrypoint.sh /entrypoint.sh
RUN chmod a+x /entrypoint.sh
VOLUME ["/home/clightning/.lightning"]
EXPOSE 9735 8080 10000
ENTRYPOINT ["/entrypoint.sh"]
CMD ["lightningd"]

31
docker/clightning/docker-entrypoint.sh

@ -0,0 +1,31 @@
#!/bin/sh
set -e
# containers on linux share file permissions with hosts.
# assigning the same uid/gid from the host user
# ensures that the files can be read/write from both sides
if ! id clightning > /dev/null 2>&1; then
USERID=${USERID:-1000}
GROUPID=${GROUPID:-1000}
echo "adding user clightning ($USERID:$GROUPID)"
groupadd -f -g $GROUPID clightning
useradd -r -u $USERID -g $GROUPID clightning
# create the .bitcoin dir for bitcoin-cli
mkdir -p /home/clightning/.bitcoin
chown clightning:clightning /home/clightning/.bitcoin
fi
if [ $(echo "$1" | cut -c1) = "-" ]; then
echo "$0: assuming arguments for lightningd"
set -- lightningd "$@"
fi
if [ "$1" = "lightningd" ] || [ "$1" = "lightning-cli" ]; then
echo "Running as clightning user: $@"
exec gosu clightning "$@"
fi
echo
exec "$@"
Loading…
Cancel
Save