You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							70 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							70 lines
						
					
					
						
							2.1 KiB
						
					
					
				| FROM golang:1.24 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 | |
| 
 | |
| ARG ROCKSDB_VERSION=v10.5.1 | |
| ENV ROCKSDB_VERSION=${ROCKSDB_VERSION} | |
| 
 | |
| # 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 -j"$(nproc)" 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=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/version.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 | |
| 
 | |
| # Install dependencies and create non-root user | |
| RUN apk add --no-cache fuse snappy gflags && \ | |
|     addgroup -g 1000 seaweed && \ | |
|     adduser -D -u 1000 -g seaweed seaweed | |
| 
 | |
| # 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 | |
| 
 | |
| # Create data directory and set proper ownership for seaweed user | |
| RUN mkdir -p /data/filer_rocksdb && \ | |
|     chown -R seaweed:seaweed /data && \ | |
|     chmod 755 /entrypoint.sh | |
| 
 | |
| VOLUME /data | |
| 
 | |
| WORKDIR /data | |
| 
 | |
| # Switch to non-root user | |
| USER seaweed | |
| 
 | |
| ENTRYPOINT ["/entrypoint.sh"]
 |