Something went wrong. Try again.
An atproto AppView for tracking a Magic: The Gathering collection github.com/eth0net/manaweb
appview atproto mtg rust typescript
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546# The AppView on a host of its own. It keeps the card cache fresh, exports the# catalog and uploads it; what a browser fetches comes from the app's own# origin and the bucket, so nothing here needs reaching from outside.## `compose.yaml` is the Compose Specification's own filename, which is why it# is not `docker-compose.yml`.
services: manaweb: # Every release rather than a pinned track: a pin is a second place the # version lives, and it was the one that went stale. image: ghcr.io/eth0net/manaweb:latest container_name: manaweb restart: unless-stopped # The four bucket variables, as values rather than references — see # `docs/configuration.md`. Nothing else is needed: the image already points # the database and the catalog at the volume below. env_file: - .env volumes: - data:/data # No published port and no shared network: nothing talks to this. A port # published here would reach the internet whatever the host firewall says, # docker writing its own rules ahead of them. healthcheck: test: ["CMD", "manaweb", "health"] interval: 60s timeout: 5s retries: 3 # It exports and uploads the catalog it already holds before it listens, # so a restart with a full cache is a transfer away from answering. start_period: 120s # A sync reads an 80MB file and rewrites every row, on a host with 1GB. The # weekly tick is the event to watch, and rotation keeps a failing one from # filling the disk it shares with the cache. logging: driver: json-file options: max-size: 10m max-file: "3"
# Named rather than a bind mount: the image's directory is owned by uid 10001# and mode 700, which a host directory would have to be given first.volumes: data: