FROM golang:1.21 as builder RUN apt-get update RUN apt-get install -y build-essential libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev liblz4-dev libzstd-dev ENV ROCKSDB_VERSION v8.1.1 # build RocksDB RUN cd /tmp && \ git clone https://github.com/facebook/rocksdb.git /tmp/rocksdb --depth 1 --single-branch --branch $ROCKSDB_VERSION && \ cd rocksdb && \ PORTABLE=1 make static_lib && \ make install-static ENV CGO_CFLAGS "-I/tmp/rocksdb/include" ENV CGO_LDFLAGS "-L/tmp/rocksdb -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4 -lzstd" # build SeaweedFS RUN mkdir -p /go/src/github.com/seaweedfs/ RUN git clone https://github.com/seaweedfs/seaweedfs /go/src/github.com/seaweedfs/seaweedfs ARG BRANCH=${BRANCH:-master} RUN cd /go/src/github.com/seaweedfs/seaweedfs && git checkout $BRANCH RUN cd /go/src/github.com/seaweedfs/seaweedfs/weed \ && export LDFLAGS="-X github.com/seaweedfs/seaweedfs/weed/util.COMMIT=$(git rev-parse --short HEAD)" \ && go install -tags "5BytesOffset rocksdb" -ldflags "-extldflags -static ${LDFLAGS}" FROM alpine AS final LABEL author="Chris Lu" COPY --from=builder /go/bin/weed /usr/bin/ RUN mkdir -p /etc/seaweedfs COPY --from=builder /go/src/github.com/seaweedfs/seaweedfs/docker/filer_rocksdb.toml /etc/seaweedfs/filer.toml COPY --from=builder /go/src/github.com/seaweedfs/seaweedfs/docker/entrypoint.sh /entrypoint.sh RUN apk add fuse snappy gflags # volume server gprc port EXPOSE 18080 # volume server http port EXPOSE 8080 # filer server gprc port EXPOSE 18888 # filer server http port EXPOSE 8888 # master server shared gprc port EXPOSE 19333 # master server shared http port EXPOSE 9333 # s3 server http port EXPOSE 8333 # webdav server http port EXPOSE 7333 RUN mkdir -p /data/filer_rocksdb VOLUME /data WORKDIR /data RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]