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