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