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>
63 lines
2.5 KiB
YAML
63 lines
2.5 KiB
YAML
# Warp all-in-one on PocketBase with SeaweedFS: the homeserver, the admin
|
|
# panel, the web client and SeaweedFS (one `weed server -s3` process) in one
|
|
# container built from this checkout (Dockerfile.PocketBase.SeaweedFS).
|
|
#
|
|
# cd Docker-AIO
|
|
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY
|
|
# # and WARP_PB_S3_SECRET
|
|
# docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
|
#
|
|
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
|
# WARP_PB_S3_BUCKET in SeaweedFS (seaweed-data), whose gateway has exactly
|
|
# one identity: the homeserver's. 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) is published on
|
|
# loopback, for aws-cli and the like; SEAWEED_S3_BIND=0.0.0.0 exposes it.
|
|
#
|
|
# This and docker-compose.pocketbase.seaweedfs.split.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.yml exec warp warp create-account --username admin --admin
|
|
|
|
name: warp-aio-pocketbase-seaweedfs
|
|
|
|
services:
|
|
warp:
|
|
build:
|
|
context: ..
|
|
dockerfile: Docker-AIO/Dockerfile.PocketBase.SeaweedFS
|
|
args:
|
|
# Passed only when set, so the Dockerfile's pin stays otherwise.
|
|
- SEAWEED_VERSION
|
|
image: warp-aio-pocketbase-seaweedfs:latest
|
|
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 gateway's only identity, and what the homeserver 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}
|
|
volumes:
|
|
- warp-data:/data
|
|
- seaweed-data:/seaweed/data
|
|
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"
|
|
|
|
volumes:
|
|
warp-data:
|
|
seaweed-data:
|