mirror of
https://github.com/lightninglabs/lightning-terminal.git
synced 2026-08-13 12:33:36 +02:00
Bumps lnd to v0.21.0-beta, lndclient to v0.21.0-1, and taproot-assets to v0.8.0 across the root, litrpc, and perms modules. taprpc uses the proper v1.1.0 tag. lnd removed the deprecated SendPaymentSync, SendToRouteSync, SendPayment (streaming), and SendToRoute (streaming) RPCs. The account interceptor checkers and their tests for these RPCs are removed since no client can call them anymore. The V2 checkers already handle account tracking for payments. The itest harness is updated for lnd v0.21's miner API changes (SendOutputs -> SendOutput, Miner.Client.Generate -> GenerateBlocks, waitForNTxsInMempool replaced by Miner.AssertNumTxsInMempool) and TimeLockDelta bumped from 20 to 40 since lnd v0.21 raised MinCLTVDelta from 18 to 24.
154 lines
6.1 KiB
Docker
154 lines
6.1 KiB
Docker
# Start with a NodeJS base image that also contains yarn.
|
|
FROM node:22.8.0-alpine@sha256:bec0ea49c2333c429b62e74e91f8ba1201b060110745c3a12ff957cd51b363c6 as nodejsbuilder
|
|
|
|
# Install dependencies to build the app
|
|
RUN apk add --no-cache --update git
|
|
|
|
# Copy in the local repository to build from.
|
|
COPY . /go/src/github.com/lightninglabs/lightning-terminal
|
|
|
|
# Set to 1 to enable this option and skip build of the web UI.
|
|
ARG NO_UI
|
|
|
|
RUN cd /go/src/github.com/lightninglabs/lightning-terminal/app \
|
|
&& if [ "$NO_UI" -eq "1" ]; then \
|
|
echo "skipping UI build";\
|
|
else \
|
|
yarn install \
|
|
&& yarn build; \
|
|
fi
|
|
|
|
# The first stage is already done and all static assets should now be generated
|
|
# in the app/build sub directory.
|
|
FROM golang:1.25.10-alpine3.23@sha256:8d22e29d960bc50cd025d93d5b7c7d220b1ee9aa7a239b3c8f55a57e987e8d45 as golangbuilder
|
|
|
|
# Instead of checking out from git again, we just copy the whole working
|
|
# directory of the previous stage that includes the generated static assets.
|
|
COPY --from=nodejsbuilder /go/src/github.com/lightninglabs/lightning-terminal /go/src/github.com/lightninglabs/lightning-terminal
|
|
|
|
# Force Go to use the cgo based DNS resolver. This is required to ensure DNS
|
|
# queries required to connect to linked containers succeed.
|
|
ENV GODEBUG netdns=cgo
|
|
|
|
# Allow forcing a specific lnd, taproot-assets, taprpc, and/or loop repo so that
|
|
# commits referenced by LND_VERSION, TAPROOT_ASSETS_VERSION, TAPRPC_VERSION, and
|
|
# LOOP_VERSION don't have to exist in the default repository. If any of these
|
|
# build arguments are not defined, the build continues using the default
|
|
# repository for that module. NOTE: If these arguments ARE defined then the
|
|
# corresponding `_VERSION` argument MUST also be defined, otherwise the build
|
|
# continues using the default repository defined for that module.
|
|
ARG LND_REPO
|
|
ARG TAPROOT_ASSETS_REPO
|
|
ARG TAPRPC_REPO
|
|
ARG LOOP_REPO
|
|
|
|
# Allow forcing a specific lnd, taproot-assets, taprpc, and/or loop version
|
|
# through a build argument.
|
|
# Please see https://go.dev/ref/mod#version-queries for the types of
|
|
# queries that can be used to define a version.
|
|
# If any of these build arguments are not defined then build uses the version
|
|
# already defined in go.mod and go.sum for that module.
|
|
# Note: If the corresponding `_REPO` argument is not defined, `go get` will
|
|
# be used along with `go mod tidy`, which sometimes may change the version you
|
|
# are trying to use because some other module requires the same requirement
|
|
# but of a different version. A trick to overcome this is to also use the
|
|
# `_REPO` argument and just put in the default repository for that module and
|
|
# that will cause a `go mod edit -replace=` to be used instead which won't have
|
|
# this issue.
|
|
ARG LND_VERSION
|
|
ARG TAPROOT_ASSETS_VERSION
|
|
ARG TAPRPC_VERSION
|
|
ARG LOOP_VERSION
|
|
|
|
# Need to restate this since running in a new container from above.
|
|
ARG NO_UI
|
|
|
|
# Allow defining the CGO_ENABLED variable so we can build binaries
|
|
# that will work in a different type of container.
|
|
# `go` assumes `CGO_ENABLED=1` if not defined, but we make it explicit here
|
|
# to be more clear of the default value.
|
|
ARG CGO_ENABLED=1
|
|
|
|
# Install dependencies and install/build lightning-terminal.
|
|
# Note: When using `docker build`, setting the environmental variable
|
|
# `DOCKER_BUILDKIT=1` is required to enable
|
|
# [BuildKit](https://docs.docker.com/build/buildkit)
|
|
# so that the cache mounts can be used.
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target=/root/.cache/go-build \
|
|
apk add --no-cache --update alpine-sdk make \
|
|
&& cd /go/src/github.com/lightninglabs/lightning-terminal \
|
|
# If a custom lnd version is supplied, force it now.
|
|
&& if [ -n "$LND_VERSION" ]; then \
|
|
# If a custom lnd repo is supplied, force it now.
|
|
if [ -n "$LND_REPO" ]; then \
|
|
go mod edit -replace=github.com/lightningnetwork/lnd=$LND_REPO@$LND_VERSION; \
|
|
else \
|
|
go get -v github.com/lightningnetwork/lnd@$LND_VERSION; \
|
|
fi \
|
|
&& go mod tidy; \
|
|
fi \
|
|
# If a custom taproot-assets version is supplied, force it now.
|
|
&& if [ -n "$TAPROOT_ASSETS_VERSION" ]; then \
|
|
# If a custom taproot-assets repo is supplied, force it now.
|
|
if [ -n "$TAPROOT_ASSETS_REPO" ]; then \
|
|
go mod edit -replace=github.com/lightninglabs/taproot-assets=$TAPROOT_ASSETS_REPO@$TAPROOT_ASSETS_VERSION; \
|
|
else \
|
|
go get -v github.com/lightninglabs/taproot-assets@$TAPROOT_ASSETS_VERSION; \
|
|
fi \
|
|
&& go mod tidy; \
|
|
fi \
|
|
# If a custom taprpc version is supplied, force it now.
|
|
&& if [ -n "$TAPRPC_VERSION" ]; then \
|
|
# If a custom taprpc repo is supplied, force it now.
|
|
if [ -n "$TAPRPC_REPO" ]; then \
|
|
go mod edit -replace=github.com/lightninglabs/taproot-assets/taprpc=$TAPRPC_REPO@$TAPRPC_VERSION; \
|
|
else \
|
|
go get -v github.com/lightninglabs/taproot-assets/taprpc@$TAPRPC_VERSION; \
|
|
fi \
|
|
&& go mod tidy; \
|
|
fi \
|
|
# If a custom loop version is supplied, force it now.
|
|
&& if [ -n "$LOOP_VERSION" ]; then \
|
|
# If a custom loop repo is supplied, force it now.
|
|
if [ -n "$LOOP_REPO" ]; then \
|
|
go mod edit -replace=github.com/lightninglabs/loop=$LOOP_REPO@$LOOP_VERSION; \
|
|
else \
|
|
go get -v github.com/lightninglabs/loop@$LOOP_VERSION; \
|
|
fi \
|
|
&& go mod tidy; \
|
|
fi \
|
|
&& if [ "$NO_UI" -eq "1" ]; then \
|
|
make go-install-noui \
|
|
&& make go-install-cli-noui; \
|
|
else \
|
|
make go-install \
|
|
&& make go-install-cli; \
|
|
fi
|
|
|
|
# Start a new, final image to reduce size.
|
|
FROM alpine:3.23@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659 as final
|
|
|
|
# Define a root volume for data persistence.
|
|
VOLUME /root/.lnd
|
|
|
|
# Expose lightning-terminal and lnd ports (server, rpc).
|
|
EXPOSE 8443 10009 9735
|
|
|
|
# Copy the binaries and entrypoint from the builder image.
|
|
COPY --from=golangbuilder /go/bin/litd /bin/
|
|
COPY --from=golangbuilder /go/bin/litcli /bin/
|
|
COPY --from=golangbuilder /go/bin/lncli /bin/
|
|
COPY --from=golangbuilder /go/bin/frcli /bin/
|
|
COPY --from=golangbuilder /go/bin/loop /bin/
|
|
COPY --from=golangbuilder /go/bin/pool /bin/
|
|
COPY --from=golangbuilder /go/bin/tapcli /bin/
|
|
|
|
# Add bash.
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
jq \
|
|
ca-certificates
|
|
|
|
# Specify the start command and entrypoint as the lightning-terminal daemon.
|
|
ENTRYPOINT ["litd"]
|