|
| 1 | +FROM debian:stable-slim as builder |
| 2 | +ARG CABAL_VERSION=3.6.2.0 |
| 3 | +ARG GHC_VERSION=8.10.7 |
| 4 | + |
| 5 | +WORKDIR /code |
| 6 | + |
| 7 | +# system dependencies |
| 8 | +ENV DEBIAN_FRONTEND=noninteractive |
| 9 | +RUN apt-get update -y && \ |
| 10 | + apt-get install -y \ |
| 11 | + automake \ |
| 12 | + build-essential \ |
| 13 | + pkg-config \ |
| 14 | + libffi-dev \ |
| 15 | + libgmp-dev \ |
| 16 | + libnuma-dev \ |
| 17 | + libpq-dev \ |
| 18 | + libssl-dev \ |
| 19 | + libsystemd-dev \ |
| 20 | + libtinfo-dev \ |
| 21 | + llvm-dev \ |
| 22 | + zlib1g-dev \ |
| 23 | + make \ |
| 24 | + g++ \ |
| 25 | + tmux \ |
| 26 | + git \ |
| 27 | + jq \ |
| 28 | + wget \ |
| 29 | + libncursesw5 \ |
| 30 | + libtool \ |
| 31 | + autoconf |
| 32 | + |
| 33 | +# cabal |
| 34 | +ENV CABAL_VERSION=${CABAL_VERSION} |
| 35 | +ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH" |
| 36 | +RUN wget https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 37 | + && tar -xf cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 38 | + && rm cabal-install-${CABAL_VERSION}-$(uname -m)-linux-deb10.tar.xz \ |
| 39 | + && mkdir -p ~/.local/bin \ |
| 40 | + && mv cabal ~/.local/bin/ \ |
| 41 | + && cabal update && cabal --version |
| 42 | + |
| 43 | +# GHC |
| 44 | +ENV GHC_VERSION=${GHC_VERSION} |
| 45 | +RUN wget https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 46 | + && tar -xf ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 47 | + && rm ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \ |
| 48 | + && cd ghc-${GHC_VERSION} \ |
| 49 | + && ./configure \ |
| 50 | + && make install |
| 51 | + |
| 52 | +# Libsodium |
| 53 | +RUN git clone https://github.com/input-output-hk/libsodium && \ |
| 54 | + cd libsodium && \ |
| 55 | + git checkout 66f017f1 && \ |
| 56 | + ./autogen.sh && \ |
| 57 | + ./configure && \ |
| 58 | + make && \ |
| 59 | + make install |
| 60 | +ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" |
| 61 | +ENV PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" |
| 62 | + |
| 63 | +# secp256k1 |
| 64 | +RUN git clone https://github.com/bitcoin-core/secp256k1 && \ |
| 65 | + cd secp256k1 && \ |
| 66 | + git checkout ac83be33 && \ |
| 67 | + ./autogen.sh && \ |
| 68 | + ./configure --enable-module-schnorrsig --enable-experimental && \ |
| 69 | + make && \ |
| 70 | + make install |
| 71 | + |
| 72 | +FROM builder as cardano-db-sync-build |
| 73 | +# Install cardano-db-sync |
| 74 | +ARG DBSYNC_VERSION=13.0.4 |
| 75 | +ENV DBSYNC_VERSION=${DBSYNC_VERSION} |
| 76 | +RUN echo "Building tags/${DBSYNC_VERSION}..." \ |
| 77 | + && echo tags/${DBSYNC_VERSION} > /CARDANO_BRANCH \ |
| 78 | + && git clone https://github.com/input-output-hk/cardano-db-sync.git \ |
| 79 | + && cd cardano-db-sync\ |
| 80 | + && git fetch --all --recurse-submodules --tags \ |
| 81 | + && git tag \ |
| 82 | + && git checkout tags/${DBSYNC_VERSION} \ |
| 83 | + && cabal configure --with-compiler=ghc-$GHC_VERSION \ |
| 84 | + && cabal build cardano-db-sync \ |
| 85 | + && mkdir -p /root/.local/bin/ \ |
| 86 | + && cp -p dist-newstyle/build/$(uname -m)-linux/ghc-$GHC_VERSION/cardano-db-sync-${DBSYNC_VERSION}/build/cardano-db-sync/cardano-db-sync /root/.local/bin/ \ |
| 87 | + && rm -rf /root/.cabal/packages \ |
| 88 | + && rm -rf /usr/local/lib/ghc-8.10.7/ /usr/local/share/doc/ghc-8.10.7/ \ |
| 89 | + && rm -rf /code/cardano-db-sync/dist-newstyle/ \ |
| 90 | + && rm -rf /root/.cabal/store/ghc-8.10.7 |
| 91 | + |
| 92 | +FROM debian:stable-slim as cardano-db-sync |
| 93 | +ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" |
| 94 | +ENV PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" |
| 95 | +COPY --from=cardano-db-sync-build /usr/local/lib/ /usr/local/lib/ |
| 96 | +COPY --from=cardano-db-sync-build /usr/local/include/ /usr/local/include/ |
| 97 | +COPY --from=cardano-db-sync-build /root/.local/bin/cardano-* /code/cardano-db-sync/scripts/postgresql-setup.sh /usr/local/bin/ |
| 98 | +COPY --from=cardano-db-sync-build /code/cardano-db-sync/schema/ /opt/cardano/schema/ |
| 99 | +COPY bin/ /bin/ |
| 100 | +COPY config/ /opt/cardano/config/ |
| 101 | +RUN apt-get update -y && \ |
| 102 | + apt-get install -y \ |
| 103 | + libffi7 \ |
| 104 | + libgmp10 \ |
| 105 | + libncursesw5 \ |
| 106 | + libnuma1 \ |
| 107 | + libsystemd0 \ |
| 108 | + libssl1.1 \ |
| 109 | + libtinfo6 \ |
| 110 | + llvm-11-runtime \ |
| 111 | + pkg-config \ |
| 112 | + postgresql-client \ |
| 113 | + zlib1g && \ |
| 114 | + chmod +x /usr/local/bin/* && \ |
| 115 | + rm -rf /var/lib/apt/lists/* |
| 116 | +EXPOSE 8080 |
| 117 | +ENTRYPOINT ["/bin/entry-point"] |
0 commit comments