Skip to content

Commit 4a53eec

Browse files
authored
Create Dockerfile.block-producer-mithril
1 parent b6e370f commit 4a53eec

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Dockerfile.block-producer-mithril

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
FROM debian:stable-slim as build
2+
3+
RUN apt-get update -y \
4+
&& apt-get install -y automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux git jq wget libncursesw5 libtool autoconf libsqlite3-dev m4 ca-certificates gcc libc6-dev curl python3 htop nload
5+
RUN mkdir secp256k1-sources && cd secp256k1-sources \
6+
&& git clone https://github.com/bitcoin-core/secp256k1.git \
7+
&& cd secp256k1 && git reset --hard ac83be33d0956faf6b7f61a60ab524ef7d6a473a \
8+
&& ./autogen.sh && ./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental \
9+
&& make && make check && make install
10+
RUN git clone https://github.com/input-output-hk/libsodium && cd libsodium \
11+
&& git checkout $(curl -L https://github.com/input-output-hk/iohk-nix/releases/latest/download/INFO | awk '$1 == "debian.libsodium-vrf.deb" { rev = gensub(/.*-(.*)\.deb/, "\\1", "g", $2); print rev }') \
12+
&& ./autogen.sh && ./configure && make && make check && make install
13+
RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=9.6.5 BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.3.0 BOOTSTRAP_HASKELL_INSTALL_STACK=1 BOOTSTRAP_HASKELL_INSTALL_HLS=1 BOOTSTRAP_HASKELL_ADJUST_BASHRC=P sh
14+
ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH"
15+
RUN git clone https://github.com/supranational/blst && cd blst && git checkout v0.3.10 && ./build.sh \
16+
&& echo cHJlZml4PS91c3IKZXhlY19wcmVmaXg9JHtwcmVmaXh9CmxpYmRpcj0ke2V4ZWNfcHJlZml4fS9saWIKaW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQoKTmFtZTogbGliYmxzdApEZXNjcmlwdGlvbjogTXVsdGlsaW5ndWFsIEJMUzEyLTM4MSBzaWduYXR1cmUgbGlicmFyeQpVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXByYW5hdGlvbmFsL2Jsc3QKVmVyc2lvbjogMC4zLjEwCkNmbGFnczogLUkke2luY2x1ZGVkaXJ9CkxpYnM6IC1MJHtsaWJkaXJ9IC1sYmxzdA== | base64 --decode >> libblst.pc \
17+
&& cp libblst.pc /usr/lib/pkgconfig/ && cp bindings/blst_aux.h bindings/blst.h bindings/blst.hpp /usr/include/ && cp libblst.a /usr/lib \
18+
&& chmod u=rw,go=r /usr/lib/libblst.a /usr/lib/pkgconfig/libblst.pc /usr/include/blst.h /usr/include/blst.hpp /usr/include/blst_aux.h
19+
20+
ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" \
21+
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
22+
23+
ARG VERSION
24+
COPY . .
25+
26+
RUN cabal update \
27+
&& cabal configure --with-compiler=ghc-9.6.5 \
28+
&& echo "package cardano-crypto-praos" >> cabal.project.local \
29+
&& echo " flags: -external-libsodium-vrf" >> cabal.project.local \
30+
&& cabal build all --minimize-conflict-set \
31+
&& mkdir -p /root/.local/bin/ \
32+
&& cp -p dist-newstyle/build/x86_64-linux/ghc-9.6.5/cardano-node-*/x/cardano-node/build/cardano-node/cardano-node /root/.local/bin/
33+
34+
FROM debian:stable-slim
35+
COPY --from=build /root/.local/bin/ /bin/
36+
COPY --from=build /usr/local/lib/ /lib/
37+
RUN apt-get update && apt-get install -y git libsodium23 libsodium-dev \
38+
automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux jq wget libncursesw5 libtool autoconf libsqlite3-dev m4 ca-certificates gcc libc6-dev curl supervisor lsof procps bc python3
39+
RUN mkdir secp256k1-sources && cd secp256k1-sources \
40+
&& git clone https://github.com/bitcoin-core/secp256k1.git && cd secp256k1 \
41+
&& git reset --hard ac83be33d0956faf6b7f61a60ab524ef7d6a473a \
42+
&& ./autogen.sh && ./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental \
43+
&& make && make check && make install
44+
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
45+
ENV PATH="/root/.cargo/bin:${PATH}"
46+
RUN git clone https://github.com/input-output-hk/mithril.git && cd mithril && git checkout stable && cargo build --release --bin mithril-signer
47+
RUN cp mithril/target/release/mithril-signer /bin/
48+
RUN groupadd -g 1001 cardano && useradd -rm -d /home/cardano -s /bin/bash -g 1001 -G sudo -u 1001 cardano
49+
RUN mkdir -p /home/cardano/data/db /home/cardano/ipc /home/cardano/mithril && chown -R 1001:1001 /home/cardano
50+
RUN cd /home/cardano && git clone https://github.com/Emurgo/cardano-configurations.git \
51+
&& cd /home/cardano/cardano-configurations/network/mainnet/cardano-node \
52+
&& rm -f config.json && cp config-bp.json config.json
53+
RUN curl -s -o gLiveView.sh https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/gLiveView.sh && chmod 755 gLiveView.sh && mkdir /home/cardano/bin && mv gLiveView.sh /home/cardano/bin/gLiveView && chown cardano /home/cardano/bin
54+
COPY env /home/cardano/bin/env
55+
RUN echo "export PATH=$PATH:/home/cardano/bin" >> /root/.bashrc && echo "export PATH=$PATH:/home/cardano/bin" >> /home/cardano/.bashrc
56+
RUN echo "W3N1cGVydmlzb3JkXQpub2RhbW9uPXRydWUKCltwcm9ncmFtOmJsb2NrcHJvZHVjZXJdCmNvbW1hbmQ9L2Jpbi9jYXJkYW5vLW5vZGUgcnVuIC0tdG9wb2xvZ3kgJShFTlZfVE9QT0xPR1lfTE9DQVRJT04pIC0tZGF0YWJhc2UtcGF0aCAvaG9tZS9jYXJkYW5vL2RhdGEvZGIgLS1zb2NrZXQtcGF0aCAvaG9tZS9jYXJkYW5vL2lwYy9ub2RlLnNvY2tldCAtLWhvc3QtYWRkciAlKEVOVl9QVUJMSUNfSVApIC0tcG9ydCAlKEVOVl9QT1JUKSAtLWNvbmZpZyAvaG9tZS9jYXJkYW5vL2NhcmRhbm8tY29uZmlndXJhdGlvbnMvbmV0d29yay8lKEVOVl9ORVRXT1JLKS9jYXJkYW5vLW5vZGUvY29uZmlnLmpzb24gLS1zaGVsbGV5LWtlcy1rZXkgJShFTlZfS0VTX0tFWV9MT0NBVElPTikgLS1zaGVsbGV5LXZyZi1rZXkgJShFTlZfVlJGX0tFWV9MT0NBVElPTikgLS1zaGVsbGV5LW9wZXJhdGlvbmFsLWNlcnRpZmljYXRlICUoRU5WX05PREVfQ0VSVF9MT0NBVElPTikKc3Rkb3V0X2xvZ2ZpbGU9L2Rldi9zdGRvdXQKc3RkZXJyX2xvZ2ZpbGU9L2Rldi9zdGRlcnIKYXV0b3Jlc3RhcnQ9dHJ1ZQoKW3Byb2dyYW06bWl0aHJpbC1zaWduZXJdCmNvbW1hbmQ9L2Jpbi9taXRocmlsLXNpZ25lciAtLWNvbmZpZy1maWxlIC9ob21lL2NhcmRhbm8vbWl0aHJpbC9zaWduZXIueWFtbCAtLXNpZ25pbmcta2V5LXBhdGggL2hvbWUvY2FyZGFuby9taXRocmlsL3NpZ25lcl9wcml2YXRlX2tleS5zawoKc3Rkb3V0X2xvZ2ZpbGU9L2Rldi9zdGRvdXQKc3RkZXJyX2xvZ2ZpbGU9L2Rldi9zdGRlcnIKYXV0b3Jlc3RhcnQ9dHJ1ZQ==" | base64 -d > /etc/supervisor/conf.d/supervisord.conf
57+
USER 1001:1001
58+
WORKDIR /home/cardano
59+
EXPOSE 8080
60+
61+
ENTRYPOINT ["/usr/bin/supervisord"]

0 commit comments

Comments
 (0)