Dockerfile.PocketBase.SeaweedFS bakes SeaweedFS into the PocketBase all-in-one image as one `weed server -s3` process; Dockerfile.PocketBase.SeaweedFS.split runs master, volume, filer, S3 gateway and the admin UI as separate processes, with the homeserver's S3 identity seeded into the filer's IAM store on every boot. Media goes to the bucket, the database stays in /data/pb_data, and both layouts share /seaweed/data, so switching between them needs no migration. The entrypoint now tracks every process in one list and stops them in reverse start order, and it refuses to start an open S3 gateway or admin UI. Each image gets a build and a prod compose file, and .env.example and the README cover the new settings. Modelled on DriverVault's Docker-AIO SeaweedFS images. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
77 lines
3.6 KiB
YAML
77 lines
3.6 KiB
YAML
# Warp all-in-one on PocketBase with SeaweedFS split into its roles: the
|
|
# homeserver, the admin panel, the web client, and SeaweedFS's master,
|
|
# volume, filer, S3 gateway and admin UI, all in one container pulled from
|
|
# a registry (the image is built from Dockerfile.PocketBase.SeaweedFS.split).
|
|
#
|
|
# cd Docker-AIO
|
|
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY,
|
|
# # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD
|
|
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml up -d
|
|
#
|
|
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
|
# WARP_PB_S3_BUCKET in SeaweedFS (seaweed-data). The homeserver's S3 identity
|
|
# is seeded into the filer's IAM store on every boot, beside any added in
|
|
# the admin UI under Object Store → Users. Media stored before S3 was on is
|
|
# not moved into the bucket.
|
|
#
|
|
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
|
# client http://localhost:8080. The S3 gateway (8333) and the SeaweedFS admin
|
|
# UI (23646) are published on loopback; SEAWEED_S3_BIND and
|
|
# SEAWEED_ADMIN_BIND=0.0.0.0 expose them, the admin UI only behind a proxy.
|
|
#
|
|
# This and docker-compose.pocketbase.seaweedfs.yml share their project and
|
|
# volumes: SeaweedFS's data has the same layout either way, so switching
|
|
# between them needs no migration.
|
|
#
|
|
# Create the first administrator once the server is up:
|
|
#
|
|
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml exec warp warp create-account --username admin --admin
|
|
#
|
|
# Nothing is built here: the image comes from WARP_REGISTRY (default
|
|
# ghcr.io/dariuszjaniak) at tag WARP_VERSION (default latest). Pin
|
|
# WARP_VERSION to a release in production, and update with
|
|
#
|
|
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml pull && docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml up -d
|
|
|
|
name: warp-aio-pocketbase-seaweedfs
|
|
|
|
services:
|
|
warp:
|
|
image: ${WARP_REGISTRY:-ghcr.io/dariuszjaniak}/warp-aio-pocketbase-seaweedfs-split:${WARP_VERSION:-latest}
|
|
pull_policy: always
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
environment:
|
|
# The gateway is in the container at a fixed address; these override
|
|
# whatever .env says about S3.
|
|
WARP_PB_S3_ENABLED: "true"
|
|
WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333
|
|
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
|
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
|
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
|
# The homeserver's identity in SeaweedFS, and what it signs with.
|
|
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
|
WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env}
|
|
# The admin UI can mint bucket credentials, so it needs a password.
|
|
WEED_ADMIN_USER: ${SEAWEED_ADMIN_USER:-admin}
|
|
WEED_ADMIN_PASSWORD: ${SEAWEED_ADMIN_PASSWORD:?set SEAWEED_ADMIN_PASSWORD in .env}
|
|
WEED_ADMIN_READONLY_USER: ${SEAWEED_ADMIN_READONLY_USER:-}
|
|
WEED_ADMIN_READONLY_PASSWORD: ${SEAWEED_ADMIN_READONLY_PASSWORD:-}
|
|
volumes:
|
|
- warp-data:/data
|
|
- seaweed-data:/seaweed/data
|
|
- seaweed-admin:/seaweed/admin
|
|
ports:
|
|
- "${WARP_PORT:-8008}:8008"
|
|
- "${WARP_ADMIN_PORT:-8009}:8009"
|
|
- "${WARP_WEB_PORT:-8080}:8080"
|
|
- "${SEAWEED_S3_BIND:-127.0.0.1}:${SEAWEED_S3_PORT:-8333}:8333"
|
|
- "${SEAWEED_ADMIN_BIND:-127.0.0.1}:${SEAWEED_ADMIN_PORT:-23646}:23646"
|
|
|
|
volumes:
|
|
warp-data:
|
|
# Master, volume and filer share it, as `weed server -dir` lays it out.
|
|
seaweed-data:
|
|
# The admin UI's session key and maintenance state; no object data.
|
|
seaweed-admin:
|