seaweedfs/docker
Chris Lu e4a635a04d
feat(docker): default CMD to mini -dir=/data for service-container use (#9255)
* feat(docker): default CMD to `mini -dir=/data` for service-container use

GitHub Actions service containers cannot pass arguments to the image
entrypoint, so `chrislusf/seaweedfs` is currently unusable as a service
because it requires a `weed` subcommand. Set a sensible default CMD so
the image starts a complete single-process cluster (master, volume,
filer, S3 on :8333, admin UI) out of the box, while still being
overridable by passing any other subcommand at `docker run` /
compose time.

Also add a `mini` case to entrypoint.sh so its logs go to stderr,
matching the existing master/volume/server cases.

Closes #9247

* fix(docker): make `isArgPassed` match `--flag` as well as `-flag`

The Go fla9 library accepts both `-flag` and `--flag` syntax, but
`isArgPassed` only matched the single-dash form. That meant a user
passing `--dir=/foo` to `weed mini` (or `--max=5` to `volume`,
`--volume.max=5` to `server`) would not suppress the entrypoint's
default, and the duplicate flag was silently appended to the command
line — relying on last-wins parsing for correctness. Match double-dash
explicitly so the override is detected for every case in the file.
2026-04-27 21:21:58 -07:00
..
admin_integration fix: add missing backslash for volume extraArgs in helm chart (#7676) 2025-12-08 23:21:02 -08:00
compose fix(s3): include static identities in listing operations (#8903) 2026-04-03 20:01:28 -07:00
nginx docker-compose 2021-01-17 18:33:14 +05:00
prometheus stats master_replica_placement_mismatch 2022-06-10 15:30:40 +05:00
tarantool Tarantool filer store (#6669) 2025-03-29 21:12:06 -07:00
weed-volume-prebuilt perf(docker): pre-build Rust binaries to avoid 5-hour QEMU emulation 2026-04-02 16:57:28 -07:00
Dockerfile.e2e ci(pjdfstest): cache docker layers via GHA to avoid apt mirror flakes (#9106) 2026-04-16 12:50:19 -07:00
Dockerfile.foundationdb_large go 1.25 2026-03-09 23:10:27 -07:00
Dockerfile.go_build feat(docker): default CMD to mini -dir=/data for service-container use (#9255) 2026-04-27 21:21:58 -07:00
Dockerfile.local feat(docker): default CMD to mini -dir=/data for service-container use (#9255) 2026-04-27 21:21:58 -07:00
Dockerfile.rocksdb_dev_env go 1.25 2026-03-09 23:10:27 -07:00
Dockerfile.rocksdb_large feat(docker): default CMD to mini -dir=/data for service-container use (#9255) 2026-04-27 21:21:58 -07:00
Dockerfile.rocksdb_large_local build(docker): upgrade all Alpine packages in final image (#9070) 2026-04-14 02:08:15 -07:00
Dockerfile.s3tests fix s3tests.conf file name 2024-06-24 17:15:16 -07:00
Dockerfile.tarantool.dev_env Tarantool filer store (#6669) 2025-03-29 21:12:06 -07:00
entrypoint_e2e.sh Remove volumePreallocate option from docker containers (#8451) 2026-02-25 22:11:15 -08:00
entrypoint.sh feat(docker): default CMD to mini -dir=/data for service-container use (#9255) 2026-04-27 21:21:58 -07:00
filer_foundationdb.toml filer store: add foundationdb (#7178) 2025-11-19 20:06:57 -08:00
filer_rocksdb.toml add filer.toml for rocksdb to docker image for rocksdb 2022-02-09 00:12:53 -08:00
filer.toml filer: default to leveldb2 2019-06-30 00:44:57 -07:00
get_fdb_checksum.sh filer store: add foundationdb (#7178) 2025-11-19 20:06:57 -08:00
Makefile docker: fix /data ownership and permission (#7451) 2025-11-08 01:10:33 -08:00
README.md refactor(compose)!: upgrade to v2 closes #3699 (#3705) 2022-10-16 14:02:33 -07:00
seaweedfs-compose.yml fix: add missing backslash for volume extraArgs in helm chart (#7676) 2025-12-08 23:21:02 -08:00
seaweedfs-dev-compose.yml Remove trailing spaces (line 53) in seaweedfs-dev-compose.yml (#8365) 2026-02-18 07:32:07 -08:00
seaweedfs.sql filer.store.mysql: Use utf8mb4 instead of 3 byte UTF8 (#4094) 2023-01-01 05:07:53 -08:00
security.toml.example fix Filer startup failure due to JWT on / path #8149 (#8167) 2026-01-29 21:45:15 -08:00
test.py fix S3 per-user-directory Policy (#6443) 2025-01-17 01:03:17 -08:00

Docker

Compose V2

SeaweedFS now uses the v2 syntax docker compose

If you rely on using Docker Compose as docker-compose (with a hyphen), you can set up Compose V2 to act as a drop-in replacement of the previous docker-compose. Refer to the Installing Compose section for detailed instructions on upgrading.

Confirm your system has docker compose v2 with a version check

$ docker compose version
Docker Compose version v2.10.2

Try it out


wget https://raw.githubusercontent.com/seaweedfs/seaweedfs/master/docker/seaweedfs-compose.yml

docker compose -f seaweedfs-compose.yml -p seaweedfs up

Try latest tip


wget https://raw.githubusercontent.com/seaweedfs/seaweedfs/master/docker/seaweedfs-dev-compose.yml

docker compose -f seaweedfs-dev-compose.yml -p seaweedfs up

Local Development

cd $GOPATH/src/github.com/seaweedfs/seaweedfs/docker
make

S3 cmd

list

s3cmd --no-ssl --host=127.0.0.1:8333 ls s3://

Build and push a multiarch build

Make sure that docker buildx is supported (might be an experimental docker feature)

BUILDER=$(docker buildx create --driver docker-container --use)
docker buildx build --pull --push --platform linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 . -t chrislusf/seaweedfs
docker buildx stop $BUILDER

Minio debugging

mc config host add local http://127.0.0.1:9000 some_access_key1 some_secret_key1
mc admin trace --all --verbose local