github.com/diadata-org/diadata@v1.4.593/build/Dockerfile-monero (about)

     1  # Multistage docker build, requires docker 17.05
     2  
     3  # builder stage
     4  FROM ubuntu:16.04 as builder
     5  
     6  RUN set -ex && \
     7      apt-get update && \
     8      apt-get --no-install-recommends --yes install \
     9          ca-certificates \
    10          cmake \
    11          g++ \
    12          make \
    13          pkg-config \
    14          graphviz \
    15          doxygen \
    16          git \
    17          curl \
    18          libtool-bin \
    19          autoconf \
    20          automake \
    21          bzip2 \
    22          xsltproc \
    23          gperf \
    24          unzip
    25  
    26  WORKDIR /usr/local
    27  
    28  #Cmake
    29  ARG CMAKE_VERSION=3.13.0
    30  ARG CMAKE_VERSION_DOT=v3.13
    31  ARG CMAKE_HASH=4058b2f1a53c026564e8936698d56c3b352d90df067b195cb749a97a3d273c90 
    32  RUN set -ex \
    33      && curl -s -O https://cmake.org/files/${CMAKE_VERSION_DOT}/cmake-${CMAKE_VERSION}.tar.gz \
    34      && echo "${CMAKE_HASH}  cmake-${CMAKE_VERSION}.tar.gz" | sha256sum -c \
    35      && tar -xzf cmake-${CMAKE_VERSION}.tar.gz \
    36      && cd cmake-${CMAKE_VERSION} \
    37      && ./configure \
    38      && make \
    39      && make install
    40  
    41  ## Boost
    42  ARG BOOST_VERSION=1_68_0
    43  ARG BOOST_VERSION_DOT=1.68.0
    44  ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7
    45  RUN set -ex \
    46      && curl -s -L -o  boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
    47      && echo "${BOOST_HASH}  boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
    48      && tar -xvf boost_${BOOST_VERSION}.tar.bz2 \
    49      && cd boost_${BOOST_VERSION} \
    50      && ./bootstrap.sh \
    51      && ./b2 --build-type=minimal link=static runtime-link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread --with-locale threading=multi threadapi=pthread cflags="-fPIC" cxxflags="-fPIC" stage
    52  ENV BOOST_ROOT /usr/local/boost_${BOOST_VERSION}
    53  
    54  # OpenSSL
    55  ARG OPENSSL_VERSION=1.1.0j
    56  ARG OPENSSL_HASH=31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246
    57  RUN set -ex \
    58      && curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
    59      && echo "${OPENSSL_HASH}  openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
    60      && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
    61      && cd openssl-${OPENSSL_VERSION} \
    62      && ./Configure linux-x86_64 no-shared --static -fPIC \
    63      && make build_generated \
    64      && make libcrypto.a \
    65      && make install
    66  ENV OPENSSL_ROOT_DIR=/usr/local/openssl-${OPENSSL_VERSION}
    67  
    68  # ZMQ
    69  ARG ZMQ_VERSION=v4.2.5
    70  ARG ZMQ_HASH=d062edd8c142384792955796329baf1e5a3377cd
    71  RUN set -ex \
    72      && git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
    73      && cd libzmq \
    74      && test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \
    75      && ./autogen.sh \
    76      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --enable-static --disable-shared \
    77      && make \
    78      && make install \
    79      && ldconfig
    80  
    81  # zmq.hpp
    82  ARG CPPZMQ_VERSION=v4.3.0
    83  ARG CPPZMQ_HASH=213da0b04ae3b4d846c9abc46bab87f86bfb9cf4
    84  RUN set -ex \
    85      && git clone https://github.com/zeromq/cppzmq.git -b ${CPPZMQ_VERSION} \
    86      && cd cppzmq \
    87      && test `git rev-parse HEAD` = ${CPPZMQ_HASH} || exit 1 \
    88      && mv *.hpp /usr/local/include
    89  
    90  # Readline
    91  ARG READLINE_VERSION=7.0
    92  ARG READLINE_HASH=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334
    93  RUN set -ex \
    94      && curl -s -O https://ftp.gnu.org/gnu/readline/readline-${READLINE_VERSION}.tar.gz \
    95      && echo "${READLINE_HASH}  readline-${READLINE_VERSION}.tar.gz" | sha256sum -c \
    96      && tar -xzf readline-${READLINE_VERSION}.tar.gz \
    97      && cd readline-${READLINE_VERSION} \
    98      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure \
    99      && make \
   100      && make install
   101  
   102  # Sodium
   103  ARG SODIUM_VERSION=1.0.16
   104  ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d
   105  RUN set -ex \
   106      && git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \
   107      && cd libsodium \
   108      && test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
   109      && ./autogen.sh \
   110      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure \
   111      && make \
   112      && make check \
   113      && make install
   114  
   115  # Udev
   116  ARG UDEV_VERSION=v3.2.6
   117  ARG UDEV_HASH=0c35b136c08d64064efa55087c54364608e65ed6
   118  RUN set -ex \
   119      && git clone https://github.com/gentoo/eudev -b ${UDEV_VERSION} \
   120      && cd eudev \
   121      && test `git rev-parse HEAD` = ${UDEV_HASH} || exit 1 \
   122      && ./autogen.sh \
   123      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --disable-gudev --disable-introspection --disable-hwdb --disable-manpages --disable-shared \
   124      && make \
   125      && make install
   126  
   127  # Libusb
   128  ARG USB_VERSION=v1.0.22
   129  ARG USB_HASH=0034b2afdcdb1614e78edaa2a9e22d5936aeae5d
   130  RUN set -ex \
   131      && git clone https://github.com/libusb/libusb.git -b ${USB_VERSION} \
   132      && cd libusb \
   133      && test `git rev-parse HEAD` = ${USB_HASH} || exit 1 \
   134      && ./autogen.sh \
   135      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --disable-shared \
   136      && make \
   137      && make install
   138  
   139  # Hidapi
   140  ARG HIDAPI_VERSION=hidapi-0.8.0-rc1
   141  ARG HIDAPI_HASH=40cf516139b5b61e30d9403a48db23d8f915f52c
   142  RUN set -ex \
   143      && git clone https://github.com/signal11/hidapi -b ${HIDAPI_VERSION} \
   144      && cd hidapi \
   145      && test `git rev-parse HEAD` = ${HIDAPI_HASH} || exit 1 \
   146      && ./bootstrap \
   147      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --enable-static --disable-shared \
   148      && make \
   149      && make install
   150  
   151  # Protobuf
   152  ARG PROTOBUF_VERSION=v3.6.1
   153  ARG PROTOBUF_HASH=48cb18e5c419ddd23d9badcfe4e9df7bde1979b2
   154  RUN set -ex \
   155      && git clone https://github.com/protocolbuffers/protobuf -b ${PROTOBUF_VERSION} \
   156      && cd protobuf \
   157      && test `git rev-parse HEAD` = ${PROTOBUF_HASH} || exit 1 \
   158      && git submodule update --init --recursive \
   159      && ./autogen.sh \
   160      && CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --enable-static --disable-shared \
   161      && make \
   162      && make install \
   163      && ldconfig
   164  
   165  ENV MONERO_VERSION=0.12.3.0
   166  ARG NPROC
   167  RUN set -ex && \
   168  		git clone --recursive --depth 1 -b v${MONERO_VERSION} https://github.com/monero-project/monero.git /src
   169  
   170  WORKDIR /src
   171  COPY . .
   172  
   173  ENV USE_SINGLE_BUILDDIR=1
   174  ARG NPROC
   175  RUN set -ex && \
   176      git submodule init && git submodule update && \
   177      rm -rf build && \
   178      if [ -z "$NPROC" ] ; \
   179      then make -j$(nproc) release-static ; \
   180      else make -j$NPROC release-static ; \
   181      fi
   182  
   183  # runtime stage
   184  FROM ubuntu:16.04
   185  
   186  RUN set -ex && \
   187      apt-get update && \
   188      apt-get --no-install-recommends --yes install ca-certificates && \
   189      apt-get clean && \
   190      rm -rf /var/lib/apt
   191  COPY --from=builder /src/build/release/bin /usr/local/bin/
   192  
   193  # Contains the blockchain
   194  VOLUME /root/.bitmonero
   195  
   196  # Generate your wallet via accessing the container and run:
   197  # cd /wallet
   198  # monero-wallet-cli
   199  VOLUME /wallet
   200  
   201  EXPOSE 18080
   202  EXPOSE 18081
   203  
   204  ENTRYPOINT ["monerod", "--p2p-bind-ip=0.0.0.0", "--p2p-bind-port=18080", "--rpc-bind-ip=0.0.0.0", "--rpc-bind-port=18081", "--non-interactive", "--confirm-external-bind"]
   205