|
| 1 | +FROM debian:stable-slim as builder |
| 2 | +ARG CABAL_VERSION=3.6.2.0 |
| 3 | +ARG GHC_VERSION=8.10.7 |
| 4 | +ARG NODE_VERSION=1.34.1 |
| 5 | + |
| 6 | +WORKDIR /code |
| 7 | + |
| 8 | +# system dependencies |
| 9 | +ENV DEBIAN_FRONTEND=noninteractive |
| 10 | +RUN apt-get update -y && \ |
| 11 | + apt-get install -y dpkg && \ |
| 12 | + apt-get install -y \ |
| 13 | + automake \ |
| 14 | + build-essential \ |
| 15 | + pkg-config \ |
| 16 | + libffi-dev \ |
| 17 | + libgmp-dev \ |
| 18 | + libssl-dev \ |
| 19 | + libtinfo-dev \ |
| 20 | + libsystemd-dev \ |
| 21 | + zlib1g-dev \ |
| 22 | + make \ |
| 23 | + g++ \ |
| 24 | + tmux \ |
| 25 | + git \ |
| 26 | + jq \ |
| 27 | + wget \ |
| 28 | + libncursesw5 \ |
| 29 | + libtool \ |
| 30 | + autoconf |
| 31 | + |
| 32 | +# cabal |
| 33 | +ENV CABAL_VERSION=${CABAL_VERSION} |
| 34 | +ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH" |
| 35 | +RUN wget https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 36 | + && tar -xf cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 37 | + && rm cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 38 | + && mkdir -p ~/.local/bin \ |
| 39 | + && mv cabal ~/.local/bin/ \ |
| 40 | + && cabal update && cabal --version |
| 41 | + |
| 42 | +# GHC |
| 43 | +ENV GHC_VERSION=${GHC_VERSION} |
| 44 | +RUN wget https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 45 | + && tar -xf ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 46 | + && rm ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 47 | + && cd ghc-${GHC_VERSION} \ |
| 48 | + && ./configure \ |
| 49 | + && make install |
| 50 | + |
| 51 | +# Libsodium |
| 52 | +RUN git clone https://github.com/input-output-hk/libsodium && \ |
| 53 | + cd libsodium && \ |
| 54 | + git checkout 66f017f1 && \ |
| 55 | + ./autogen.sh && \ |
| 56 | + ./configure && \ |
| 57 | + make && \ |
| 58 | + make install |
| 59 | +ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" |
| 60 | +ENV PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" |
| 61 | + |
| 62 | +# Install cardano-node |
| 63 | +ENV NODE_VERSION=${NODE_VERSION} |
| 64 | +RUN echo "Building tags/${NODE_VERSION}..." \ |
| 65 | + && echo tags/${NODE_VERSION} > /CARDANO_BRANCH \ |
| 66 | + && git clone https://github.com/input-output-hk/cardano-node.git \ |
| 67 | + && cd cardano-node \ |
| 68 | + && git fetch --all --recurse-submodules --tags \ |
| 69 | + && git tag \ |
| 70 | + && git checkout tags/${NODE_VERSION} \ |
| 71 | + && cabal configure --with-compiler=ghc-$GHC_VERSION \ |
| 72 | + && echo "package cardano-crypto-praos" >> cabal.project.local \ |
| 73 | + && echo " flags: -external-libsodium-vrf" >> cabal.project.local \ |
| 74 | + && cabal build all \ |
| 75 | + && mkdir -p /root/.local/bin/ \ |
| 76 | + && cp -p dist-newstyle/build/x86_64-linux/ghc-$GHC_VERSION/cardano-node-${NODE_VERSION}/x/cardano-node/build/cardano-node/cardano-node /root/.local/bin/ \ |
| 77 | + && cp -p dist-newstyle/build/x86_64-linux/ghc-$GHC_VERSION/cardano-cli-${NODE_VERSION}/x/cardano-cli/build/cardano-cli/cardano-cli /root/.local/bin/ \ |
| 78 | + && rm -rf /root/.cabal/packages \ |
| 79 | + && rm -rf /usr/local/lib/ghc-8.10.7/ /usr/local/share/doc/ghc-8.10.7/ \ |
| 80 | + && rm -rf /cardano-node/dist-newstyle/ \ |
| 81 | + && rm -rf /root/.cabal/store/ghc-8.10.7 |
| 82 | + |
| 83 | +FROM debian:stable-slim as cardano-node |
| 84 | +ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" |
| 85 | +COPY --from=builder /usr/local/lib/ /usr/local/lib/ |
| 86 | +COPY --from=builder /usr/local/include/ /usr/local/include/ |
| 87 | +COPY --from=builder /root/.local/bin/cardano-* /usr/local/bin/ |
| 88 | +COPY bin/ /usr/local/bin/ |
| 89 | +COPY config/ /opt/cardano/config/ |
| 90 | +RUN apt-get update -y && \ |
| 91 | + apt-get install -y \ |
| 92 | + libgmp10 \ |
| 93 | + libncursesw5 \ |
| 94 | + zlib1g && \ |
| 95 | + chmod +x /usr/local/bin/* && \ |
| 96 | + rm -rf /var/lib/apt/lists/* |
| 97 | +EXPOSE 3001 12798 |
| 98 | +ENTRYPOINT ["/usr/local/bin/entrypoint"] |
0 commit comments