mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
324d39bb6b
Most user-contributed plugins are written in python, and not having it available in the docker image is rather annoying to work around. So we just add that tiny dependency to the image. Fixes #3765
102 lines
4.3 KiB
Docker
102 lines
4.3 KiB
Docker
# This dockerfile is meant to compile a c-lightning x64 image
|
|
# It is using multi stage build:
|
|
# * downloader: Download litecoin/bitcoin and qemu binaries needed for c-lightning
|
|
# * builder: Compile c-lightning dependencies, then c-lightning itself with static linking
|
|
# * final: Copy the binaries required at runtime
|
|
# The resulting image uploaded to dockerhub will only contain what is needed for runtime.
|
|
# From the root of the repository, run "docker build -t yourimage:yourtag ."
|
|
FROM debian:stretch-slim as downloader
|
|
|
|
RUN set -ex \
|
|
&& apt-get update \
|
|
&& apt-get install -qq --no-install-recommends ca-certificates dirmngr wget
|
|
|
|
WORKDIR /opt
|
|
|
|
RUN wget -qO /opt/tini "https://github.com/krallin/tini/releases/download/v0.18.0/tini" \
|
|
&& echo "12d20136605531b09a2c2dac02ccee85e1b874eb322ef6baf7561cd93f93c855 /opt/tini" | sha256sum -c - \
|
|
&& chmod +x /opt/tini
|
|
|
|
ARG BITCOIN_VERSION=0.18.1
|
|
ENV BITCOIN_TARBALL bitcoin-${BITCOIN_VERSION}-x86_64-linux-gnu.tar.gz
|
|
ENV BITCOIN_URL https://bitcoincore.org/bin/bitcoin-core-$BITCOIN_VERSION/$BITCOIN_TARBALL
|
|
ENV BITCOIN_ASC_URL https://bitcoincore.org/bin/bitcoin-core-$BITCOIN_VERSION/SHA256SUMS.asc
|
|
|
|
RUN mkdir /opt/bitcoin && cd /opt/bitcoin \
|
|
&& wget -qO $BITCOIN_TARBALL "$BITCOIN_URL" \
|
|
&& wget -qO bitcoin.asc "$BITCOIN_ASC_URL" \
|
|
&& grep $BITCOIN_TARBALL bitcoin.asc | tee SHA256SUMS.asc \
|
|
&& sha256sum -c SHA256SUMS.asc \
|
|
&& BD=bitcoin-$BITCOIN_VERSION/bin \
|
|
&& tar -xzvf $BITCOIN_TARBALL $BD/bitcoin-cli --strip-components=1 \
|
|
&& rm $BITCOIN_TARBALL
|
|
|
|
ENV LITECOIN_VERSION 0.16.3
|
|
ENV LITECOIN_PGP_KEY FE3348877809386C
|
|
ENV LITECOIN_URL https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz
|
|
ENV LITECOIN_ASC_URL https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/litecoin-${LITECOIN_VERSION}-linux-signatures.asc
|
|
ENV LITECOIN_SHA256 686d99d1746528648c2c54a1363d046436fd172beadaceea80bdc93043805994
|
|
|
|
# install litecoin binaries
|
|
RUN mkdir /opt/litecoin && cd /opt/litecoin \
|
|
&& wget -qO litecoin.tar.gz "$LITECOIN_URL" \
|
|
&& echo "$LITECOIN_SHA256 litecoin.tar.gz" | sha256sum -c - \
|
|
&& BD=litecoin-$LITECOIN_VERSION/bin \
|
|
&& tar -xzvf litecoin.tar.gz $BD/litecoin-cli --strip-components=1 --exclude=*-qt \
|
|
&& rm litecoin.tar.gz
|
|
|
|
FROM debian:stretch-slim as builder
|
|
|
|
ENV LIGHTNINGD_VERSION=master
|
|
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates autoconf automake build-essential git libtool python3 python3-mako wget gnupg dirmngr git gettext
|
|
|
|
RUN wget -q https://zlib.net/zlib-1.2.11.tar.gz \
|
|
&& tar xvf zlib-1.2.11.tar.gz \
|
|
&& cd zlib-1.2.11 \
|
|
&& ./configure \
|
|
&& make \
|
|
&& make install && cd .. && rm zlib-1.2.11.tar.gz && rm -rf zlib-1.2.11
|
|
|
|
RUN apt-get install -y --no-install-recommends unzip tclsh \
|
|
&& wget -q https://www.sqlite.org/2018/sqlite-src-3260000.zip \
|
|
&& unzip sqlite-src-3260000.zip \
|
|
&& cd sqlite-src-3260000 \
|
|
&& ./configure --enable-static --disable-readline --disable-threadsafe --disable-load-extension \
|
|
&& make \
|
|
&& make install && cd .. && rm sqlite-src-3260000.zip && rm -rf sqlite-src-3260000
|
|
|
|
RUN wget -q https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz \
|
|
&& tar xvf gmp-6.1.2.tar.xz \
|
|
&& cd gmp-6.1.2 \
|
|
&& ./configure --disable-assembly \
|
|
&& make \
|
|
&& make install && cd .. && rm gmp-6.1.2.tar.xz && rm -rf gmp-6.1.2
|
|
|
|
WORKDIR /opt/lightningd
|
|
COPY . /tmp/lightning
|
|
RUN git clone --recursive /tmp/lightning . && \
|
|
git checkout $(git --work-tree=/tmp/lightning --git-dir=/tmp/lightning/.git rev-parse HEAD)
|
|
|
|
ARG DEVELOPER=0
|
|
RUN ./configure --prefix=/tmp/lightning_install --enable-static && make -j3 DEVELOPER=${DEVELOPER} && make install
|
|
|
|
FROM debian:stretch-slim as final
|
|
COPY --from=downloader /opt/tini /usr/bin/tini
|
|
RUN apt-get update && apt-get install -y --no-install-recommends socat inotify-tools python3 python3-pip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV LIGHTNINGD_DATA=/root/.lightning
|
|
ENV LIGHTNINGD_RPC_PORT=9835
|
|
ENV LIGHTNINGD_PORT=9735
|
|
|
|
RUN mkdir $LIGHTNINGD_DATA && \
|
|
touch $LIGHTNINGD_DATA/config
|
|
VOLUME [ "/root/.lightning" ]
|
|
COPY --from=builder /tmp/lightning_install/ /usr/local/
|
|
COPY --from=downloader /opt/bitcoin/bin /usr/bin
|
|
COPY --from=downloader /opt/litecoin/bin /usr/bin
|
|
COPY tools/docker-entrypoint.sh entrypoint.sh
|
|
|
|
EXPOSE 9735 9835
|
|
ENTRYPOINT [ "/usr/bin/tini", "-g", "--", "./entrypoint.sh" ]
|