github.com/cryptohub-digital/blockbook-fork@v0.0.0-20230713133354-673c927af7f1/build/docker/bin/Dockerfile (about)

     1  # initialize from the image defined by BASE_IMAGE
     2  ARG BASE_IMAGE
     3  FROM $BASE_IMAGE
     4  ARG DEBIAN_FRONTEND=noninteractive
     5  ARG PORTABLE_ROCKSDB
     6  
     7  RUN apt-get update && \
     8      apt-get upgrade -y && \
     9      apt-get install -y build-essential git wget pkg-config lxc-dev libzmq3-dev \
    10                         libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev \
    11                         libzstd-dev liblz4-dev graphviz && \
    12      apt-get clean
    13  ARG GOLANG_VERSION
    14  ENV GOLANG_VERSION=go1.19.2
    15  ENV ROCKSDB_VERSION=v7.7.2
    16  ENV GOPATH=/go
    17  ENV PATH=$PATH:$GOPATH/bin
    18  ENV CGO_CFLAGS="-I/opt/rocksdb/include"
    19  ENV CGO_LDFLAGS="-L/opt/rocksdb -ldl -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4 -lzstd"
    20  ARG TCMALLOC
    21  
    22  RUN mkdir /build
    23  
    24  RUN if [ -n "${TCMALLOC}" ]; then \
    25      echo "Using TCMALLOC"; \
    26      apt-get install -y google-perftools; \
    27      ln -s /usr/lib/libtcmalloc.so.4 /usr/lib/libtcmalloc.so;\
    28  fi
    29  
    30  # install and configure go
    31  ARG TARGETPLATFORM
    32  RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then ARCHITECTURE=amd64; elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then ARCHITECTURE=arm64; elif [ "$TARGETPLATFORM" = "linux/aarch64" ]; then ARCHITECTURE=arm64; else ARCHITECTURE=amd64; fi \
    33      && cd /opt && wget https://dl.google.com/go/$GOLANG_VERSION.linux-$ARCHITECTURE.tar.gz && \
    34      tar xf $GOLANG_VERSION.linux-$ARCHITECTURE.tar.gz
    35  RUN ln -s /opt/go/bin/go /usr/bin/go
    36  RUN mkdir -p $GOPATH
    37  RUN echo -n "GO version: " && go version
    38  RUN echo -n "GOPATH: " && echo $GOPATH
    39  
    40  # install rocksdb
    41  RUN cd /opt && git clone -b $ROCKSDB_VERSION --depth 1 https://github.com/facebook/rocksdb.git
    42  RUN cd /opt/rocksdb && CFLAGS=-fPIC CXXFLAGS=-fPIC PORTABLE=$PORTABLE_ROCKSDB make -j 4 release
    43  RUN strip /opt/rocksdb/ldb /opt/rocksdb/sst_dump && \
    44      cp /opt/rocksdb/ldb /opt/rocksdb/sst_dump /build
    45  
    46  # pre-load depencencies
    47  RUN \
    48      cleanup() { rm -rf $GOPATH/src/github.com/trezor ; } && \
    49      trap cleanup EXIT && \
    50      mkdir -p $GOPATH/src/github.com/trezor && \
    51      cd $GOPATH/src/github.com/trezor && \
    52      git clone https://github.com/trezor/blockbook.git && \
    53      cd blockbook && \
    54      go mod download
    55  
    56  ADD Makefile /build/Makefile
    57  
    58  VOLUME /out
    59  
    60  WORKDIR /build