From dd958aff108048adc84154e8f294bd478ab20088 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 11 Nov 2022 15:46:20 +0100 Subject: [PATCH 1/6] Dockerfile with websocat --- .../Dockerfile | 28 ++++++++++++++++--- entrypoint.sh | 5 ++++ 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 entrypoint.sh diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index b6ef792..35d6c04 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -1,4 +1,5 @@ -FROM rust:latest AS builder +# Electrs build stage +FROM rust:latest AS electrs-builder ARG COMMIT=253040e346664976c12e6c214ee2858a4dad2e06 @@ -11,12 +12,31 @@ WORKDIR /electrs RUN cargo build --release --bin electrs +# websocat build stage +FROM rust:1.60-alpine3.15 as cargo-build + +RUN apk add --no-cache musl-dev pkgconfig openssl-dev git + +RUN git clone https://github.com/vi/websocat.git && cd websocat && git checkout v1.11.0 + +WORKDIR /websocat + +ARG CARGO_OPTS="--features=workaround1,seqpacket,prometheus_peer,prometheus/process,crypto_peer" + +RUN cargo build --release --target=x86_64-unknown-linux-musl $CARGO_OPTS && \ + rm -f target/x86_64-unknown-linux-musl/release/deps/websocat* + +RUN cargo build --release --target=x86_64-unknown-linux-musl $CARGO_OPTS && \ + strip target/x86_64-unknown-linux-musl/release/websocat + +# Final stage FROM debian:stable-slim -WORKDIR /build +COPY --from=electrs-builder /electrs/target/release/electrs /usr/local/bin +COPY --from=cargo-build /websocat/target/x86_64-unknown-linux-musl/release/websocat /usr/local/bin -COPY --from=builder /electrs/target/release/electrs /build +COPY entrypoint.sh /entrypoint.sh STOPSIGNAL SIGINT -ENTRYPOINT ["/build/electrs"] +ENTRYPOINT ["/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..f0a1937 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#/!bin/bash +set -m +electrs & +websocat --oneshot -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:50001& +fg %1 \ No newline at end of file From 27eb0d01c8fde114e8ac06de46e14262559f66cf Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 29 Nov 2022 16:41:27 +0100 Subject: [PATCH 2/6] add websocat entrypoint.sh script --- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile | 2 +- entrypoint.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index 35d6c04..b2e7183 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -39,4 +39,4 @@ COPY entrypoint.sh /entrypoint.sh STOPSIGNAL SIGINT -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["bash", "/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh index f0a1937..7977679 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,5 +1,5 @@ #/!bin/bash set -m -electrs & -websocat --oneshot -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:50001& +electrs& +websocat -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:50001& fg %1 \ No newline at end of file From 484e39aea03e618ddb2c50a4cc69ec6941d98eb0 Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 1 Dec 2022 12:26:21 +0100 Subject: [PATCH 3/6] add websocat-installer step fetching websocat binaries --- .../Dockerfile | 27 +++++++------------ .../Dockerfile.liquid | 13 +++++++-- entrypoint.sh | 2 +- install-websocat.sh | 4 +++ 4 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 install-websocat.sh diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index b2e7183..7e53132 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -1,10 +1,10 @@ # Electrs build stage -FROM rust:latest AS electrs-builder +FROM rust:latest AS builder ARG COMMIT=253040e346664976c12e6c214ee2858a4dad2e06 RUN apt-get update -RUN apt-get install -y clang cmake +RUN apt-get install -y clang cmake RUN git clone https://github.com/blockstream/electrs && cd electrs && git checkout ${COMMIT} @@ -12,28 +12,19 @@ WORKDIR /electrs RUN cargo build --release --bin electrs -# websocat build stage -FROM rust:1.60-alpine3.15 as cargo-build +FROM debian:stable-slim AS websocat-installer -RUN apk add --no-cache musl-dev pkgconfig openssl-dev git - -RUN git clone https://github.com/vi/websocat.git && cd websocat && git checkout v1.11.0 - -WORKDIR /websocat - -ARG CARGO_OPTS="--features=workaround1,seqpacket,prometheus_peer,prometheus/process,crypto_peer" - -RUN cargo build --release --target=x86_64-unknown-linux-musl $CARGO_OPTS && \ - rm -f target/x86_64-unknown-linux-musl/release/deps/websocat* +RUN apt-get update +RUN apt-get install -y wget -RUN cargo build --release --target=x86_64-unknown-linux-musl $CARGO_OPTS && \ - strip target/x86_64-unknown-linux-musl/release/websocat +COPY install-websocat.sh /install-websocat.sh +RUN chmod +x /install-websocat.sh && /install-websocat.sh # Final stage FROM debian:stable-slim -COPY --from=electrs-builder /electrs/target/release/electrs /usr/local/bin -COPY --from=cargo-build /websocat/target/x86_64-unknown-linux-musl/release/websocat /usr/local/bin +COPY --from=builder /electrs/target/release/electrs /usr/local/bin +COPY --from=websocat-installer /usr/local/bin/websocat /usr/local/bin COPY entrypoint.sh /entrypoint.sh diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid index ea05970..ed4592e 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid @@ -11,12 +11,21 @@ WORKDIR /electrs RUN cargo build --features liquid --release --bin electrs +FROM debian:stable-slim AS websocat-installer + +RUN apt-get update +RUN apt-get install -y wget + +COPY install-websocat.sh /install-websocat.sh +RUN chmod +x /install-websocat.sh && /install-websocat.sh + FROM debian:stable-slim WORKDIR /build -COPY --from=builder /electrs/target/release/electrs /build +COPY --from=builder /electrs/target/release/electrs /usr/local/bin +COPY --from=websocat-installer /usr/local/bin/websocat /usr/local/bin STOPSIGNAL SIGINT -ENTRYPOINT ["/build/electrs"] +ENTRYPOINT ["bash", "/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh index 7977679..7c570f0 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,4 +1,4 @@ -#/!bin/bash +#!/bin/bash set -m electrs& websocat -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:50001& diff --git a/install-websocat.sh b/install-websocat.sh new file mode 100644 index 0000000..4b3e4b7 --- /dev/null +++ b/install-websocat.sh @@ -0,0 +1,4 @@ +#!/bin/bash +wget https://github.com/vi/websocat/releases/download/v1.11.0/websocat.x86_64-unknown-linux-musl +chmod +x websocat.x86_64-unknown-linux-musl +mv websocat.x86_64-unknown-linux-musl /usr/local/bin/websocat From 546ad55f42501a55664046099723759b9239dccd Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 5 Dec 2022 15:01:40 +0100 Subject: [PATCH 4/6] inline install-websocat.sh --- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile | 5 +++-- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid | 5 +++-- install-websocat.sh | 4 ---- 3 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 install-websocat.sh diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index 7e53132..99f28f1 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -17,8 +17,9 @@ FROM debian:stable-slim AS websocat-installer RUN apt-get update RUN apt-get install -y wget -COPY install-websocat.sh /install-websocat.sh -RUN chmod +x /install-websocat.sh && /install-websocat.sh +RUN wget https://github.com/vi/websocat/releases/download/v1.11.0/websocat.x86_64-unknown-linux-musl \ + && chmod +x websocat.x86_64-unknown-linux-musl \ + && mv websocat.x86_64-unknown-linux-musl /usr/local/bin/websocat # Final stage FROM debian:stable-slim diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid index ed4592e..73e099a 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid @@ -16,8 +16,9 @@ FROM debian:stable-slim AS websocat-installer RUN apt-get update RUN apt-get install -y wget -COPY install-websocat.sh /install-websocat.sh -RUN chmod +x /install-websocat.sh && /install-websocat.sh +RUN wget https://github.com/vi/websocat/releases/download/v1.11.0/websocat.x86_64-unknown-linux-musl \ + && chmod +x websocat.x86_64-unknown-linux-musl \ + && mv websocat.x86_64-unknown-linux-musl /usr/local/bin/websocat FROM debian:stable-slim diff --git a/install-websocat.sh b/install-websocat.sh deleted file mode 100644 index 4b3e4b7..0000000 --- a/install-websocat.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -wget https://github.com/vi/websocat/releases/download/v1.11.0/websocat.x86_64-unknown-linux-musl -chmod +x websocat.x86_64-unknown-linux-musl -mv websocat.x86_64-unknown-linux-musl /usr/local/bin/websocat From 12228c2794ce93248fbd0d14d0a317f4e79860f3 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 6 Dec 2022 13:06:17 +0100 Subject: [PATCH 5/6] PORT argument in entrypoint.sh --- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile | 5 ++++- .../Dockerfile.liquid | 7 ++++++- entrypoint.sh | 12 +++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index 99f28f1..685e505 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -3,6 +3,8 @@ FROM rust:latest AS builder ARG COMMIT=253040e346664976c12e6c214ee2858a4dad2e06 +ENV WS_PORT=1234 + RUN apt-get update RUN apt-get install -y clang cmake @@ -28,7 +30,8 @@ COPY --from=builder /electrs/target/release/electrs /usr/local/bin COPY --from=websocat-installer /usr/local/bin/websocat /usr/local/bin COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh STOPSIGNAL SIGINT -ENTRYPOINT ["bash", "/entrypoint.sh"] +ENTRYPOINT /entrypoint.sh ${WS_PORT} diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid index 73e099a..fd1eaa5 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid @@ -2,6 +2,8 @@ FROM rust:latest AS builder ARG COMMIT=a808b51d0d9301fa82390b985c57551966001f9b +ENV WS_PORT=1234 + RUN apt-get update RUN apt-get install -y clang cmake @@ -27,6 +29,9 @@ WORKDIR /build COPY --from=builder /electrs/target/release/electrs /usr/local/bin COPY --from=websocat-installer /usr/local/bin/websocat /usr/local/bin +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + STOPSIGNAL SIGINT -ENTRYPOINT ["bash", "/entrypoint.sh"] +ENTRYPOINT /entrypoint.sh ${WS_PORT} diff --git a/entrypoint.sh b/entrypoint.sh index 7c570f0..75b206a 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,5 +1,15 @@ #!/bin/bash + +PORT=$1 + +if [ -z "$PORT" ]; then + echo "Usage: $0 " + exit 1 +fi + +echo "Starting websocket server on port $PORT" + set -m electrs& -websocat -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:50001& +websocat -b ws-l:127.0.0.1:$PORT tcp:127.0.0.1:50001& fg %1 \ No newline at end of file From 2200ba1a5e9d89cd14553a4af85a28d7b8fd822a Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 7 Dec 2022 23:49:37 +0100 Subject: [PATCH 6/6] add ELECTRUM_PORT env parameter --- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile | 3 ++- a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid | 3 ++- entrypoint.sh | 7 ++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile index 685e505..2417de2 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile @@ -4,6 +4,7 @@ FROM rust:latest AS builder ARG COMMIT=253040e346664976c12e6c214ee2858a4dad2e06 ENV WS_PORT=1234 +ENV ELECTRUM_PORT=50001 RUN apt-get update RUN apt-get install -y clang cmake @@ -34,4 +35,4 @@ RUN chmod +x /entrypoint.sh STOPSIGNAL SIGINT -ENTRYPOINT /entrypoint.sh ${WS_PORT} +ENTRYPOINT /entrypoint.sh ${WS_PORT} ${ELECTRUM_PORT} diff --git a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid index fd1eaa5..67a2d36 100644 --- a/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid +++ b/a808b51d0d9301fa82390b985c57551966001f9b/Dockerfile.liquid @@ -3,6 +3,7 @@ FROM rust:latest AS builder ARG COMMIT=a808b51d0d9301fa82390b985c57551966001f9b ENV WS_PORT=1234 +ENV ELECTRUM_PORT=50001 RUN apt-get update RUN apt-get install -y clang cmake @@ -34,4 +35,4 @@ RUN chmod +x /entrypoint.sh STOPSIGNAL SIGINT -ENTRYPOINT /entrypoint.sh ${WS_PORT} +ENTRYPOINT /entrypoint.sh ${WS_PORT} ${ELECTRUM_PORT} diff --git a/entrypoint.sh b/entrypoint.sh index 75b206a..e05ca78 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,9 +1,10 @@ #!/bin/bash PORT=$1 +ELECTRUM_RPC_PORT=$2 -if [ -z "$PORT" ]; then - echo "Usage: $0 " +if [ -z "$PORT" ] || [ -z "$ELECTRUM_RPC_PORT" ]; then + echo "Usage: $0 " exit 1 fi @@ -11,5 +12,5 @@ echo "Starting websocket server on port $PORT" set -m electrs& -websocat -b ws-l:127.0.0.1:$PORT tcp:127.0.0.1:50001& +websocat -b ws-l:127.0.0.1:$PORT tcp:127.0.0.1:$ELECTRUM_RPC_PORT& fg %1 \ No newline at end of file