forked from IntersectMBO/cardano-node
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile.backbone
44 lines (41 loc) · 8.86 KB
/
Dockerfile.backbone
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
FROM debian:stable-slim as build
RUN apt-get update -y \
&& 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 \
&& apt-get clean
RUN mkdir secp256k1-sources && cd secp256k1-sources && git clone https://github.com/bitcoin-core/secp256k1.git && cd secp256k1 && git reset --hard ac83be33d0956faf6b7f61a60ab524ef7d6a473a && ./autogen.sh && ./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental && make && make check && make install
RUN git clone https://github.com/input-output-hk/libsodium && cd libsodium && 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 }') && ./autogen.sh && ./configure && make && make check && make install
RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=8.10.7 BOOTSTRAP_HASKELL_CABAL_VERSION=3.8.1.0 BOOTSTRAP_HASKELL_INSTALL_STACK=1 BOOTSTRAP_HASKELL_INSTALL_HLS=1 BOOTSTRAP_HASKELL_ADJUST_BASHRC=P sh
ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH"
RUN git clone https://github.com/supranational/blst && cd blst && git checkout v0.3.10 && ./build.sh && echo cHJlZml4PS91c3IKZXhlY19wcmVmaXg9JHtwcmVmaXh9CmxpYmRpcj0ke2V4ZWNfcHJlZml4fS9saWIKaW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQoKTmFtZTogbGliYmxzdApEZXNjcmlwdGlvbjogTXVsdGlsaW5ndWFsIEJMUzEyLTM4MSBzaWduYXR1cmUgbGlicmFyeQpVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXByYW5hdGlvbmFsL2Jsc3QKVmVyc2lvbjogMC4zLjEwCkNmbGFnczogLUkke2luY2x1ZGVkaXJ9CkxpYnM6IC1MJHtsaWJkaXJ9IC1sYmxzdA== | base64 --decode >> libblst.pc && cp libblst.pc /usr/lib/pkgconfig/ && cp bindings/blst_aux.h bindings/blst.h bindings/blst.hpp /usr/include/ && cp libblst.a /usr/lib && chmod u=rw,go=r /usr/lib/libblst.a && chmod u=rw,go=r /usr/lib/pkgconfig/libblst.pc && chmod u=rw,go=r /usr/include/blst.h && chmod u=rw,go=r /usr/include/blst.hpp && chmod u=rw,go=r /usr/include/blst_aux.h
ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" \
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
RUN echo "Building tags/$VERSION..."
RUN echo tags/$VERSION > /CARDANO_BRANCH
COPY . .
RUN cabal update \
&& cabal configure --with-compiler=ghc-8.10.7 \
&& echo "package cardano-crypto-praos" >> cabal.project.local \
&& echo " flags: -external-libsodium-vrf" >> cabal.project.local \
&& cabal build all \
&& mkdir -p /root/.local/bin/ \
&& cp -p dist-newstyle/build/x86_64-linux/ghc-8.10.7/cardano-node-*/x/cardano-node/build/cardano-node/cardano-node /root/.local/bin/
FROM debian:stable-slim
COPY --from=build /root/.local/bin/ /bin/
COPY --from=build /usr/local/lib/ /lib/
RUN apt-get update && apt-get install git -y
RUN 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
RUN mkdir secp256k1-sources && cd secp256k1-sources && git clone https://github.com/bitcoin-core/secp256k1.git && cd secp256k1 && git reset --hard ac83be33d0956faf6b7f61a60ab524ef7d6a473a && ./autogen.sh && ./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental && make && make check && make install
RUN groupadd -g 1001 cardano
RUN useradd -rm -d /home/cardano -s /bin/bash -g 1001 -G sudo -u 1001 cardano
RUN mkdir -p /home/cardano/data/db
RUN mkdir -p /home/cardano/logs
RUN mkdir /home/cardano/ipc
RUN cd /home/cardano && git clone https://github.com/input-output-hk/cardano-configurations
RUN echo ewogICJFbmFibGVQMlAiOiB0cnVlLAogICJUYXJnZXROdW1iZXJPZlJvb3RQZWVycyI6IDUwLAogICJUYXJnZXROdW1iZXJPZktub3duUGVlcnMiOiAxNTAsCiAgIlRhcmdldE51bWJlck9mRXN0YWJsaXNoZWRQZWVycyI6IDUwLAogICJUYXJnZXROdW1iZXJPZkFjdGl2ZVBlZXJzIjogMjAsCiAgIlBlZXJTaGFyaW5nIjogdHJ1ZSwKICAiTWF4Q29uY3VycmVuY3lCdWxrU3luYyI6IDEsCiAgIk1heENvbmN1cnJlbmN5RGVhZGxpbmUiOiA0LAogICJFeHBlcmltZW50YWxQcm90b2NvbHNFbmFibGVkIjogdHJ1ZSwKICAiQWxvbnpvR2VuZXNpc0ZpbGUiOiAiLi4vZ2VuZXNpcy9hbG9uem8uanNvbiIsCiAgIkFsb256b0dlbmVzaXNIYXNoIjogIjdlOTRhMTVmNTVkMWU4MmQxMGYwOTIwM2ZhMWQ0MGY4ZWVkZTU4ZmQ4MDY2NTQyY2Y2NTY2MDA4MDY4ZWQ4NzQiLAogICJBcHBsaWNhdGlvbk5hbWUiOiAiY2FyZGFuby1zbCIsCiAgIkFwcGxpY2F0aW9uVmVyc2lvbiI6IDEsCiAgIkJ5cm9uR2VuZXNpc0ZpbGUiOiAiLi4vZ2VuZXNpcy9ieXJvbi5qc29uIiwKICAiQnlyb25HZW5lc2lzSGFzaCI6ICI1ZjIwZGY5MzM1ODQ4MjI2MDFmOWUzZjhjMDI0ZWI1ZWIyNTJmZThjZWZiMjRkMTMxN2RjM2Q0MzJlOTQwZWJiIiwKICAiQ29ud2F5R2VuZXNpc0ZpbGUiOiAiLi4vZ2VuZXNpcy9jb253YXkuanNvbiIsCiAgIkNvbndheUdlbmVzaXNIYXNoIjogIjE1YTE5OWY4OTVlNDYxZWMwZmZjNmRkNGU0MDI4YWYyOGE0OTJhYjRlODA2ZDM5Y2I2NzRjODhmNzY0M2VmNjIiLAogICJMYXN0S25vd25CbG9ja1ZlcnNpb24tQWx0IjogMCwKICAiTGFzdEtub3duQmxvY2tWZXJzaW9uLU1ham9yIjogMywKICAiTGFzdEtub3duQmxvY2tWZXJzaW9uLU1pbm9yIjogMCwKICAiTWF4S25vd25NYWpvclByb3RvY29sVmVyc2lvbiI6IDIsCiAgIlByb3RvY29sIjogIkNhcmRhbm8iLAogICJSZXF1aXJlc05ldHdvcmtNYWdpYyI6ICJSZXF1aXJlc05vTWFnaWMiLAogICJTaGVsbGV5R2VuZXNpc0ZpbGUiOiAiLi4vZ2VuZXNpcy9zaGVsbGV5Lmpzb24iLAogICJTaGVsbGV5R2VuZXNpc0hhc2giOiAiMWEzYmUzOGJjYmI3OTExOTY5MjgzNzE2YWQ3YWE1NTAyNTAyMjZiNzZhNjFmYzUxY2M5YTlhMzVkOTI3NmQ4MSIsCiAgIlRyYWNlQWNjZXB0UG9saWN5IjogdHJ1ZSwKICAiVHJhY2VCbG9ja0ZldGNoQ2xpZW50IjogdHJ1ZSwKICAiVHJhY2VCbG9ja0ZldGNoRGVjaXNpb25zIjogdHJ1ZSwKICAiVHJhY2VCbG9ja0ZldGNoUHJvdG9jb2wiOiBmYWxzZSwKICAiVHJhY2VCbG9ja0ZldGNoUHJvdG9jb2xTZXJpYWxpc2VkIjogZmFsc2UsCiAgIlRyYWNlQmxvY2tGZXRjaFNlcnZlciI6IGZhbHNlLAogICJUcmFjZUNoYWluRGIiOiB0cnVlLAogICJUcmFjZUNoYWluU3luY0Jsb2NrU2VydmVyIjogZmFsc2UsCiAgIlRyYWNlQ2hhaW5TeW5jQ2xpZW50IjogdHJ1ZSwKICAiVHJhY2VDaGFpblN5bmNIZWFkZXJTZXJ2ZXIiOiBmYWxzZSwKICAiVHJhY2VDaGFpblN5bmNQcm90b2NvbCI6IGZhbHNlLAogICJUcmFjZUNvbm5lY3Rpb25NYW5hZ2VyIjogdHJ1ZSwKICAiVHJhY2VETlNSZXNvbHZlciI6IHRydWUsCiAgIlRyYWNlRE5TU3Vic2NyaXB0aW9uIjogdHJ1ZSwKICAiVHJhY2VEaWZmdXNpb25Jbml0aWFsaXphdGlvbiI6IHRydWUsCiAgIlRyYWNlRXJyb3JQb2xpY3kiOiB0cnVlLAogICJUcmFjZUZvcmdlIjogdHJ1ZSwKICAiVHJhY2VIYW5kc2hha2UiOiBmYWxzZSwKICAiVHJhY2VJbmJvdW5kR292ZXJub3IiOiB0cnVlLAogICJUcmFjZUlwU3Vic2NyaXB0aW9uIjogdHJ1ZSwKICAiVHJhY2VMZWRnZXJQZWVycyI6IHRydWUsCiAgIlRyYWNlTG9jYWxDaGFpblN5bmNQcm90b2NvbCI6IGZhbHNlLAogICJUcmFjZUxvY2FsRXJyb3JQb2xpY3kiOiB0cnVlLAogICJUcmFjZUxvY2FsSGFuZHNoYWtlIjogZmFsc2UsCiAgIlRyYWNlTG9jYWxSb290UGVlcnMiOiB0cnVlLAogICJUcmFjZUxvY2FsVHhTdWJtaXNzaW9uUHJvdG9jb2wiOiBmYWxzZSwKICAiVHJhY2VMb2NhbFR4U3VibWlzc2lvblNlcnZlciI6IGZhbHNlLAogICJUcmFjZU1lbXBvb2wiOiBmYWxzZSwKICAiVHJhY2VNdXgiOiBmYWxzZSwKICAiVHJhY2VQZWVyU2VsZWN0aW9uIjogdHJ1ZSwKICAiVHJhY2VQZWVyU2VsZWN0aW9uQWN0aW9ucyI6IHRydWUsCiAgIlRyYWNlUHVibGljUm9vdFBlZXJzIjogdHJ1ZSwKICAiVHJhY2VTZXJ2ZXIiOiB0cnVlLAogICJUcmFjZVR4SW5ib3VuZCI6IGZhbHNlLAogICJUcmFjZVR4T3V0Ym91bmQiOiBmYWxzZSwKICAiVHJhY2VUeFN1Ym1pc3Npb25Qcm90b2NvbCI6IGZhbHNlLAogICJUcmFjaW5nVmVyYm9zaXR5IjogIk5vcm1hbFZlcmJvc2l0eSIsCiAgIlR1cm5PbkxvZ01ldHJpY3MiOiB0cnVlLAogICJUdXJuT25Mb2dnaW5nIjogdHJ1ZSwKICAiZGVmYXVsdEJhY2tlbmRzIjogWwogICAgIkthdGlwQksiCiAgXSwKICAiZGVmYXVsdFNjcmliZXMiOiBbCiAgICBbCiAgICAgICJGaWxlU0siLAogICAgICAiL2hvbWUvY2FyZGFuby9sb2dzL25vZGUuanNvbiIKICAgIF0sCiAgICBbCiAgICAgICJTdGRvdXRTSyIsCiAgICAgICJzdGRvdXQiCiAgICBdCiAgXSwKICAiaGFzRUtHIjogMTI3ODgsCiAgImhhc1Byb21ldGhldXMiOiBbCiAgICAiMC4wLjAuMCIsCiAgICAxMjc5OAogIF0sCiAgIm1pblNldmVyaXR5IjogIkluZm8iLAogICJvcHRpb25zIjogewogICAgIm1hcEJhY2tlbmRzIjogewogICAgICAiY2FyZGFuby5ub2RlLm1ldHJpY3MiOiBbCiAgICAgICAgIkVLR1ZpZXdCSyIKICAgICAgXSwKICAgICAgImNhcmRhbm8ubm9kZS5yZXNvdXJjZXMiOiBbCiAgICAgICAgIkVLR1ZpZXdCSyIKICAgICAgXQogICAgfSwKICAgICJtYXBTdWJ0cmFjZSI6IHsKICAgICAgImNhcmRhbm8ubm9kZS5tZXRyaWNzIjogewogICAgICAgICJzdWJ0cmFjZSI6ICJOZXV0cmFsIgogICAgICB9CiAgICB9CiAgfSwKICAicm90YXRpb24iOiB7CiAgICAicnBLZWVwRmlsZXNOdW0iOiAxMCwKICAgICJycExvZ0xpbWl0Qnl0ZXMiOiAxMDAwMDAwMDAsCiAgICAicnBNYXhBZ2VIb3VycyI6IDEyOAogIH0sCiAgInNldHVwQmFja2VuZHMiOiBbCiAgICAiS2F0aXBCSyIKICBdLAogICJzZXR1cFNjcmliZXMiOiBbCiAgICB7CiAgICAgICJzY0Zvcm1hdCI6ICJTY1RleHQiLAogICAgICAic2NLaW5kIjogIlN0ZG91dFNLIiwKICAgICAgInNjTmFtZSI6ICJzdGRvdXQiLAogICAgICAic2NSb3RhdGlvbiI6IG51bGwKICAgIH0sCiAgICB7CiAgICAgICJzY0Zvcm1hdCI6ICJTY0pzb24iLAogICAgICAic2NLaW5kIjogIkZpbGVTSyIsCiAgICAgICJzY05hbWUiOiAiL2hvbWUvY2FyZGFuby9sb2dzL25vZGUuanNvbiIsCiAgICAgICJzY1JvdGF0aW9uIjogbnVsbAogICAgfQogIF0KfQo= | base64 --decode > /home/cardano/cardano-configurations/network/mainnet/cardano-node/config.json
RUN cd /home/cardano/cardano-configurations/network/mainnet/cardano-node/ && wget https://book.world.dev.cardano.org/environments/mainnet/topology-p2p.json && mv topology-p2p.json topology.json
RUN chown -R 1001:1001 /home/cardano/ipc
RUN chown -R 1001:1001 /home/cardano/data
RUN chown -R 1001:1001 /home/cardano/cardano-configurations
USER 1001:1001
WORKDIR /home/cardano
ENTRYPOINT cardano-node run --database-path /home/cardano/data/db --topology "$TOPOLOGY_LOCATION" --socket-path /home/cardano/ipc/node.socket --host-addr "$PUBLIC_IP" --port "$PORT" --config /home/cardano/cardano-configurations/network/"$NETWORK"/cardano-node/config.json