github.com/Finschia/ostracon@v1.1.5/test/e2e/docker/Dockerfile (about) 1 # We need to build in a Linux environment to support C libraries, e.g. RocksDB. 2 # We use Debian instead of Alpine, so that we can use binary database packages 3 # instead of spending time compiling them. 4 FROM golang:1.20 5 6 RUN apt-get -qq update -y && apt-get -qq upgrade -y >/dev/null 7 RUN apt-get -qq install -y libleveldb-dev make libc-dev libtool >/dev/null 8 9 # RocksDB 6.24.2+ is required to build with tm-db 0.6.7 (but RocksDB 7.x is not yet supported). 10 # librocksdb-dev installed by apt with golang:1.20 is 7.8.3-2, so we have to build it from the latest 6.x sources. 11 ARG ROCKSDB_VERSION=6.29.5 12 ARG ROCKSDB_FILE=rocksdb-v${ROCKSDB_VERSION}.tar.gz 13 ARG ROCKSDB_DIR=rocksdb-${ROCKSDB_VERSION} 14 RUN wget -O ${ROCKSDB_FILE} https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz 15 RUN tar -zxvf ${ROCKSDB_FILE} 16 RUN cd ${ROCKSDB_DIR} && DISABLE_WARNING_AS_ERROR=1 make -j2 shared_lib && make install-shared 17 RUN cp /usr/local/lib/librocksdb.so* /usr/lib 18 RUN rm -rf ${ROCKSDB_FILE} ${ROCKSDB_DIR} 19 20 ENV OSTRACON_BUILD_OPTIONS badgerdb,boltdb,cleveldb,rocksdb 21 ENV CGO_LDFLAGS -lrocksdb 22 WORKDIR /src/ostracon 23 24 # Fetch dependencies separately (for layer caching) 25 COPY go.mod go.sum ./ 26 RUN go mod download 27 28 # Build Ostracon and install into /usr/bin/ostracon 29 COPY . . 30 RUN make build && cp build/ostracon /usr/bin/ostracon 31 COPY test/e2e/docker/entrypoint* /usr/bin/ 32 33 RUN cd test/e2e && make node && cp build/node /usr/bin/app 34 35 # Set up runtime directory. We don't use a separate runtime image since we need 36 # e.g. leveldb and rocksdb which are already installed in the build image. 37 WORKDIR /ostracon 38 VOLUME /ostracon 39 ENV OCHOME=/ostracon 40 41 EXPOSE 26656 26657 26660 6060 42 ENTRYPOINT ["/usr/bin/entrypoint"] 43 CMD ["node"] 44 STOPSIGNAL SIGTERM