In the next commit, we'll bump our lnd dependency to `v0.18.3-beta`.
That version adds explicitly declared optional protos fields with commit
3de6c5415a
Optional proto fields are only available in Proto3 after protoc version
`3.15+`, and we therefore need to bump our protoc version for the protos
generation script to support them.
When doing so, we mimic the protobuf-compiler version used in `lnd`,
which is `3.21.12`. As protobuf-compiler 3.21.x+ is only available for
Node.js base images with Debian 12 (bookworm), we also update our NodeJS
base image to version 22.8.0-bookworm.
With this commit we split the build process into three stages: we start
with the JavaScript to static asset build process that requires NodeJS
then copy the result into the second stage that requires golang.
Finally, we just extract the final binaries in the third stage to keep
the shipped image as small as possible.
We add a new standalone Dockerfile that checks out the code from GitHub
and goes through all necessary build steps from scratch. The git commit
or tag that should be checked out before building can be specified as a
build argument.
To still allow more rapid development, the old Dockerfile that builds
from the local source is renamed to dev.Dockerfile to make the
distinction clear.