2020/08/29

[ADA]Cardano Nodeを起動するDockerfileを作りました

cardanodocker

やったこと

Building Cardano Node — cardano-node Documentation 1.0.0 documentationの記事を参考にしつつ、最新のソースコードからCardano nodeを起動するDocker imageを開発しました。

Motivation

inputoutput/cardano-node - Docker Hubも準備されていたのですが、将来的に細かい中身の制御などをしたかったので、
debianベースのimageで作ることにしました。

  • inputoutput/cardano-node:1.18.0

Dockerfile

  • cardano-node
  • cardano-cli

がinstallされたdocker imageを作成しました。

FROM debian:stretch-slim

ENV CARDANO_NODE_VERSION=1.19.0

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y --no-install-recommends \
      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

# avoid ssl error when wget https site
RUN apt-get install -y --no-install-recommends ca-certificates

# avoid "lookup exception Network.Socket.getAddrInfo" error.
# https://github.com/input-output-hk/cardano-node/issues/953#issuecomment-636761169
RUN apt-get install -y --no-install-recommends netbase

WORKDIR /usr/local/src

# Download, unpack, install and update Cabal
RUN wget https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz && \
    tar -xf cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz && \
    rm cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz cabal.sig && \
    mkdir -p /root/.local/bin && \
    mv cabal /root/.local/bin/
ENV PATH=/root/.local/bin:${PATH}
RUN cabal update

# Download and install GHC
RUN wget https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-deb9-linux.tar.xz && \
    tar -xf ghc-8.6.5-x86_64-deb9-linux.tar.xz && \
    rm ghc-8.6.5-x86_64-deb9-linux.tar.xz && \
    cd ghc-8.6.5 && \
    ./configure && \
    make install

# Install Libsodium
RUN git clone https://github.com/input-output-hk/libsodium && \
    cd libsodium && \
    git checkout 66f017f1 && \
    ./autogen.sh && \
    ./configure && \
    make && \
    make install
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# Download the source code for cardano-node and Build and install the node
RUN git clone https://github.com/input-output-hk/cardano-node.git && \
    cd cardano-node && \
    git fetch --all --tags && \
    git checkout tags/${CARDANO_NODE_VERSION} && \
    cabal build all && \
    cp -p dist-newstyle/build/x86_64-linux/ghc-8.6.5/cardano-node-${CARDANO_NODE_VERSION}/x/cardano-node/build/cardano-node/cardano-node /root/.local/bin/ && \
    cp -p dist-newstyle/build/x86_64-linux/ghc-8.6.5/cardano-cli-${CARDANO_NODE_VERSION}/x/cardano-cli/build/cardano-cli/cardano-cli /root/.local/bin/

こちらを元に、起動スクリプトを足して完成になります。

(実際は)1. Get configuration files — cardano-node Documentation 1.0.0 documentationを参考にしてconfigファイルを作成して起動する必要があります。

以上になります。