-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
115 lines (82 loc) · 3.43 KB
/
Dockerfile
File metadata and controls
115 lines (82 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
FROM golang:latest AS go-builder
WORKDIR /build
COPY go.mod go.sum ./
RUN go mod download
RUN go mod vendor
COPY . .
RUN CGO_ENABLED=1 go build -o /build/klever-elements .
FROM rust:latest AS rust-builder
RUN apt-get update && apt-get install -y git && \
rm -rf /var/lib/apt/lists/*
RUN cargo install --git https://github.com/starkware-bitcoin/simply simply
FROM ubuntu:latest AS builder
ARG TARGETARCH
FROM builder AS builder_amd64
ENV ARCH=x86_64
FROM builder AS builder_arm64
ENV ARCH=aarch64
FROM builder AS builder_riscv64
ENV ARCH=riscv64
FROM builder_${TARGETARCH} AS bitcoin-builder
RUN apt update \
&& apt install -y --no-install-recommends \
ca-certificates \
gnupg \
libatomic1 \
wget \
&& apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ARG VERSION=29.1
ARG BITCOIN_CORE_SIGNATURE=71A3B16735405025D447E8F274810B012346C9A6
ARG ELEMENTS_VERSION=22.1.1
RUN cd /tmp \
&& gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys ${BITCOIN_CORE_SIGNATURE} \
&& wget https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS.asc \
https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS \
https://bitcoincore.org/bin/bitcoin-core-${VERSION}/bitcoin-${VERSION}-${ARCH}-linux-gnu.tar.gz \
&& gpg --verify --status-fd 1 --verify SHA256SUMS.asc SHA256SUMS 2>/dev/null | grep "^\[GNUPG:\] VALIDSIG.*${BITCOIN_CORE_SIGNATURE}\$" \
&& sha256sum --ignore-missing --check SHA256SUMS \
&& tar -xzvf bitcoin-${VERSION}-${ARCH}-linux-gnu.tar.gz -C /opt \
&& ln -sv bitcoin-${VERSION} /opt/bitcoin \
&& /opt/bitcoin/bin/test_bitcoin --show_progress \
&& rm -v /opt/bitcoin/bin/test_bitcoin /opt/bitcoin/bin/bitcoin-qt
RUN cd /tmp && \
wget https://github.com/ElementsProject/elements/releases/download/elements-${ELEMENTS_VERSION}/elements-${ELEMENTS_VERSION}-${ARCH}-linux-gnu.tar.gz && \
tar -xzvf elements-${ELEMENTS_VERSION}-${ARCH}-linux-gnu.tar.gz -C /opt && \
ln -sv elements-${ELEMENTS_VERSION} /opt/elements && \
rm -rf /tmp/elements*
FROM ubuntu:latest
RUN apt update \
&& apt install -y --no-install-recommends \
ca-certificates \
libatomic1 \
&& apt clean && rm -rf /var/lib/apt/lists/*
WORKDIR /app
ENV BTCD_DIR=data/bitcoindir
ENV ELEMENTSD_DIR=data/elementsdir
ENV BREEZ_PATH=data/breez
RUN mkdir -p $BTCD_DIR
RUN mkdir -p $ELEMENTSD_DIR
RUN mkdir -p $BREEZ_PATH
ENV PATH="/opt/bitcoin/bin:/opt/elements/bin:${PATH}"
RUN apt-get update && apt-get install -y sqlite3 libsqlite3-dev
COPY --from=bitcoin-builder /opt/bitcoin /opt/bitcoin
COPY --from=bitcoin-builder /opt/elements /opt/elements
COPY ./setup.sh /app/setup.sh
RUN chmod +x /app/setup.sh
RUN /app/setup.sh
COPY --from=go-builder /build/views /app/views
COPY --from=go-builder /build/klever-elements /app/klever-elements
COPY --from=rust-builder /usr/local/cargo/bin/simply /usr/local/bin/simply
COPY --from=go-builder /build/vendor/github.com/breez/breez-sdk-liquid-go/breez_sdk_liquid/lib/linux-amd64/libbreez_sdk_liquid_bindings.so /usr/local/lib/
COPY --from=go-builder /build/vendor/github.com/breez/breez-sdk-liquid-go/breez_sdk_liquid/lib/linux-aarch64/libbreez_sdk_liquid_bindings.so /usr/local/lib/
RUN ldconfig
RUN chmod +x /app/klever-elements
COPY .env /app/.env
RUN ls -a
ARG GROUP_ID=1000
ARG USER_ID=1000
RUN userdel ubuntu \
&& groupadd -g ${GROUP_ID} bitcoin \
&& useradd -u ${USER_ID} -g bitcoin -d /bitcoin bitcoin
EXPOSE 3000
ENTRYPOINT ["./klever-elements"]