diff --git a/docker/Dockerfile b/docker/Dockerfile index 3502204e..f75caff3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,13 +3,16 @@ FROM debian:9 RUN apt-get update && apt-get install -y \ - build-essential git wget pkg-config lxc-dev libzmq3-dev libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev + build-essential git wget pkg-config lxc-dev libzmq3-dev libgflags-dev \ + libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev graphviz ENV GOLANG_VERSION=go1.9.2.linux-amd64 ENV GOPATH=/go +ENV PATH=$PATH:$GOPATH/bin # install and configure go -RUN cd /opt && wget https://storage.googleapis.com/golang/$GOLANG_VERSION.tar.gz && tar xf $GOLANG_VERSION.tar.gz +RUN cd /opt && wget https://storage.googleapis.com/golang/$GOLANG_VERSION.tar.gz && \ + tar xf $GOLANG_VERSION.tar.gz RUN ln -s /opt/go/bin/go /usr/bin/go RUN mkdir -p $GOPATH RUN echo -n "GO version: " && go version @@ -19,18 +22,19 @@ RUN echo -n "GOPATH: " && echo $GOPATH RUN cd /opt && git clone https://github.com/facebook/rocksdb.git RUN cd /opt/rocksdb && CFLAGS=-fPIC CXXFLAGS=-fPIC make static_lib -# install gorocksdb -RUN CGO_CFLAGS="-I/opt/rocksdb/include" CGO_LDFLAGS="-L/opt/rocksdb -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4" go get github.com/tecbot/gorocksdb - -RUN go get github.com/golang/glog -RUN go get github.com/martinboehm/golang-socketio -RUN go get github.com/btcsuite/btcd -RUN go get github.com/gorilla/handlers -RUN go get github.com/bsm/go-vlq -RUN go get github.com/gorilla/handlers -RUN go get github.com/gorilla/mux -RUN go get github.com/pebbe/zmq4 -RUN go get github.com/pkg/profile +RUN go get github.com/golang/dep/cmd/dep +# clone repo and ensure dependencies RUN cd $GOPATH/src && git clone https://github.com/jpochyla/blockbook.git -RUN cd $GOPATH/src/blockbook && go build +RUN cd $GOPATH/src/blockbook && dep ensure + +# install gorocksdb +RUN cd $GOPATH/src/blockbook/vendor/github.com/tecbot/gorocksdb && \ + CGO_CFLAGS="-I/opt/rocksdb/include" \ + CGO_LDFLAGS="-L/opt/rocksdb -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4" \ + go install . + + +WORKDIR $GOPATH/src/blockbook + +CMD go build -o /out/blockbook diff --git a/docker/build.sh b/docker/build.sh index 1f9e0a4f..106f3bef 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -3,7 +3,14 @@ set -e cd `dirname $0` +# prepare build image docker build -t blockbook-build . -docker run -t -v $(pwd):/out blockbook-build /bin/cp /go/src/blockbook/blockbook /out/ + +if [ "$1" == "local" ]; then + SRC_BIND="-v $(pwd)/..:/go/src/blockbook" +fi + +# build binary +docker run -t --rm -v $(pwd):/out $SRC_BIND blockbook-build strip blockbook