https://hub.docker.com/r/chrislusf/seaweedfs/

https://github.com/chrislusf/seaweedfs


compose.yml:

version: '2'
services:
  master:
    image: chrislusf/seaweedfs # use a remote image
    ports:
    - 9333:9333
    - 19333:19333
    command: "master"
  volume:
    image: chrislusf/seaweedfs # use a remote image
    ports:
    - 8080:8080
    - 18080:18080
    command: 'volume -max=15 -mserver="master:9333" -port=8080'
    depends_on:
    - master
  filer:
    image: chrislusf/seaweedfs # use a remote image
    ports:
    - 8888:8888
    - 18888:18888
    command: 'filer -master="master:9333"'
    tty: true
    stdin_open: true
    depends_on:
    - master
    - volume
  cronjob:
    image: chrislusf/seaweedfs # use a remote image
    command: 'cronjob'
    environment:
      # Run re-replication every 2 minutes
      CRON_SCHEDULE: '*/2 * * * * *' # Default: '*/5 * * * * *'
      WEED_MASTER: master:9333 # Default: localhost:9333
    depends_on:
    - master
    - volume
  s3:
    image: chrislusf/seaweedfs # use a remote image
    ports:
    - 8333:8333
    command: 's3 -filer="filer:8888"'
    depends_on:
    - master
    - volume
    - filer


Dockerfile

FROM golang:latest
RUN go get github.com/chrislusf/seaweedfs/weed
# 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
RUN mkdir -p /data/filerldb2
VOLUME /data
RUN mkdir -p /etc/seaweedfs
RUN cp /go/src/github.com/chrislusf/seaweedfs/docker/filer.toml /etc/seaweedfs/filer.toml
RUN cp /go/src/github.com/chrislusf/seaweedfs/docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
RUN cp /go/bin/weed /usr/bin/
ENTRYPOINT ["/entrypoint.sh"]


entrypoint.sh:

#!/bin/sh
case "$1" in
  'master')
  	ARGS="-ip `hostname -i` -mdir /data"
	# Is this instance linked with an other master? (Docker commandline "--link master1:master")
	if [ -n "$MASTER_PORT_9333_TCP_ADDR" ] ; then
		ARGS="$ARGS -peers=$MASTER_PORT_9333_TCP_ADDR:$MASTER_PORT_9333_TCP_PORT"
	fi
  	exec /usr/bin/weed $@ $ARGS
	;;
  'volume')
  	ARGS="-ip `hostname -i` -dir /data"
	# Is this instance linked with a master? (Docker commandline "--link master1:master")
  	if [ -n "$MASTER_PORT_9333_TCP_ADDR" ] ; then
		ARGS="$ARGS -mserver=$MASTER_PORT_9333_TCP_ADDR:$MASTER_PORT_9333_TCP_PORT"
	fi
  	exec /usr/bin/weed $@ $ARGS
	;;
  'server')
  	ARGS="-ip `hostname -i` -dir /data"
  	if [ -n "$MASTER_PORT_9333_TCP_ADDR" ] ; then
		ARGS="$ARGS -master.peers=$MASTER_PORT_9333_TCP_ADDR:$MASTER_PORT_9333_TCP_PORT"
	fi
  	exec /usr/bin/weed $@ $ARGS
  	;;
  'filer')
  	ARGS=""
  	if [ -n "$MASTER_PORT_9333_TCP_ADDR" ] ; then
		ARGS="$ARGS -master=$MASTER_PORT_9333_TCP_ADDR:$MASTER_PORT_9333_TCP_PORT"
	fi
  	exec /usr/bin/weed $@ $ARGS
	;;
  's3')
  	ARGS="-domainName=$S3_DOMAIN_NAME -key.file=$S3_KEY_FILE -cert.file=$S3_CERT_FILE"
  	if [ -n "$FILER_PORT_8888_TCP_ADDR" ] ; then
		ARGS="$ARGS -filer=$FILER_PORT_8888_TCP_ADDR:$FILER_PORT_8888_TCP_PORT"
	fi
  	exec /usr/bin/weed $@ $ARGS
	;;
  'cronjob')
	MASTER=${WEED_MASTER-localhost:9333}
	FIX_REPLICATION_CRON_SCHEDULE=${CRON_SCHEDULE-*/7 * * * * *}
	echo "$FIX_REPLICATION_CRON_SCHEDULE" 'echo "volume.fix.replication" | weed shell -master='$MASTER > /crontab
	BALANCING_CRON_SCHEDULE=${CRON_SCHEDULE-25 * * * * *}
	echo "$BALANCING_CRON_SCHEDULE" 'echo "volume.balance -c ALL -force" | weed shell -master='$MASTER >> /crontab
	echo "Running Crontab:"
	cat /crontab
	exec supercronic /crontab
	;;
  *)
  	exec /usr/bin/weed $@
	;;
esac


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回