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