From 1a5429a723c3ed02f8de3a79ee8381cc3759ccca Mon Sep 17 00:00:00 2001 From: Snider Date: Wed, 18 May 2022 15:33:24 +0100 Subject: [PATCH] docker: adjustable library versions (#331) * Adjustable lib versions via docker build args * gha for docker build. * removes the push to repo * moves arg's to the top of the file. * Delete docker-build.yml --- utils/docker/Dockerfile | 109 ++++++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 39 deletions(-) diff --git a/utils/docker/Dockerfile b/utils/docker/Dockerfile index 2fe77a64..580c2a31 100644 --- a/utils/docker/Dockerfile +++ b/utils/docker/Dockerfile @@ -17,12 +17,19 @@ # To stop container: # docker stop zanod # +# To build with different lib versions, pass through --build-arg's +# docker build --build-arg OPENSSL_VERSION_DOT=1.1.1n --build-arg OPENSSL_HASH=40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a -f utils/docker/Dockerfile . +# +# Available Build Args +# - CMake Version: CMAKE_VERSION_DOT, CMAKE_HASH +# - Boost Version: BOOST_VERSION, BOOST_VERSION_DOT, BOOST_HASH +# - OpenSSL Version: OPENSSL_VERSION_DOT, OPENSSL_HASH # # Build Zano # -FROM ubuntu:18.04 as zano-build +FROM ubuntu:18.04 as build-prep RUN apt update && \ apt install -y build-essential \ @@ -34,47 +41,71 @@ RUN apt update && \ WORKDIR /root -# CMake 3.15.5 +# Lib Settings +ARG CMAKE_VERSION_DOT=3.15.5 +ARG CMAKE_HASH=62e3e7d134a257e13521e306a9d3d1181ab99af8fcae66699c8f98754fc02dda -RUN curl https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.sh -OL &&\ - echo '62e3e7d134a257e13521e306a9d3d1181ab99af8fcae66699c8f98754fc02dda cmake-3.15.5-Linux-x86_64.sh' | sha256sum -c - &&\ - mkdir /opt/cmake &&\ - sh cmake-3.15.5-Linux-x86_64.sh --prefix=/opt/cmake --skip-license &&\ - ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake &&\ - cmake --version &&\ - rm cmake-3.15.5-Linux-x86_64.sh +ARG BOOST_VERSION=1_70_0 +ARG BOOST_VERSION_DOT=1.70.0 +ARG BOOST_HASH=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778 +ARG OPENSSL_VERSION_DOT=1.1.1n +ARG OPENSSL_HASH=40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a -# Boost 1.70 - -RUN curl https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.bz2 -OL &&\ - echo '430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778 boost_1_70_0.tar.bz2' | sha256sum -c - &&\ - tar -xjf boost_1_70_0.tar.bz2 &&\ - rm boost_1_70_0.tar.bz2 &&\ - cd boost_1_70_0 &&\ - ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer,log &&\ - ./b2 &&\ - cd .. - -ENV BOOST_ROOT=/root/boost_1_70_0 - - -# OpenSSL 1.1.1n - -RUN curl https://www.openssl.org/source/openssl-1.1.1n.tar.gz -OL &&\ - echo '40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a openssl-1.1.1n.tar.gz' | sha256sum -c - &&\ - tar xaf openssl-1.1.1n.tar.gz &&\ - rm openssl-1.1.1n.tar.gz &&\ - cd openssl-1.1.1n &&\ - ./config --prefix=/root/openssl --openssldir=/root/openssl shared zlib &&\ - make &&\ - make test &&\ - make install &&\ - cd .. &&\ - rm -rf openssl-1.1.1n - +# Environment Variables +ENV BOOST_ROOT /root/boost_${BOOST_VERSION} ENV OPENSSL_ROOT_DIR=/root/openssl +########################################################## +# Split download & compile to use dockers caching layers # +########################################################## + +# Download CMake +RUN set -ex \ + && curl https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION_DOT}/cmake-${CMAKE_VERSION_DOT}-Linux-x86_64.sh -OL\ + && echo "${CMAKE_HASH} cmake-${CMAKE_VERSION_DOT}-Linux-x86_64.sh" | sha256sum -c + +# Download Boost +RUN set -ex \ + && curl -L -o boost_${BOOST_VERSION}.tar.bz2 https://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION_DOT}/boost_${BOOST_VERSION}.tar.bz2 \ + && sha256sum boost_${BOOST_VERSION}.tar.bz2 \ + && echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c\ + && tar -xvf boost_${BOOST_VERSION}.tar.bz2 + + +# Download OpenSSL +RUN curl https://www.openssl.org/source/openssl-${OPENSSL_VERSION_DOT}.tar.gz -OL \ + && sha256sum openssl-${OPENSSL_VERSION_DOT}.tar.gz \ + && echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION_DOT}.tar.gz" | sha256sum -c + + +# Compile CMake +RUN set -ex \ + && mkdir /opt/cmake \ + && sh cmake-3.15.5-Linux-x86_64.sh --prefix=/opt/cmake --skip-license\ + && ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake\ + && cmake --version\ + && rm cmake-3.15.5-Linux-x86_64.sh + +# Compile Boost +RUN set -ex \ + && cd boost_${BOOST_VERSION} \ + && ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer,log \ + && ./b2 + +# Compile OpenSSL +RUN set -ex \ + && tar xaf openssl-${OPENSSL_VERSION_DOT}.tar.gz \ + && rm openssl-${OPENSSL_VERSION_DOT}.tar.gz \ + && cd openssl-${OPENSSL_VERSION_DOT} \ + && ./config --prefix=/root/openssl --openssldir=/root/openssl shared zlib \ + && make \ + && make test \ + && make install \ + && cd .. \ + && rm -rf openssl-${OPENSSL_VERSION_DOT} + +FROM build-prep as build # Zano @@ -102,8 +133,8 @@ RUN useradd -ms /bin/bash zano &&\ USER zano:zano WORKDIR /home/zano -COPY --chown=zano:zano --from=zano-build /root/zano/build/src/zanod . -COPY --chown=zano:zano --from=zano-build /root/zano/build/src/simplewallet . +COPY --chown=zano:zano --from=build /root/zano/build/src/zanod . +COPY --chown=zano:zano --from=build /root/zano/build/src/simplewallet . # blockchain loaction VOLUME /home/zano/.Zano