A lexicon-driven AppView for ATProto.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104# Explicit project name. All three compose files live in this directory, so# without this they would all default to the directory name — sharing# container names, networks and volumes. `down` in one would then tear down# the others, which is exactly what used to happen when a dev stack and a# test run overlapped.name: happyview
services: # Postgres is optional — only needed if you set DATABASE_URL to a postgres:// URL. # SQLite is the default and requires no container. To use Postgres, uncomment this # service and update DATABASE_URL in .env. # # postgres: # image: postgres:17 # environment: # POSTGRES_USER: ${POSTGRES_USER} # POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # POSTGRES_DB: ${POSTGRES_DB} # ports: # - "5432:5432" # volumes: # - pgdata:/var/lib/postgresql/data # healthcheck: # test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] # interval: 5s # timeout: 3s # retries: 5
happyview: image: rust:1.96.1 working_dir: /app entrypoint: ["sh", "/scripts/entrypoint.sh"] command: cargo watch -x run ports: - "3000:3000" volumes: - .:/app - cargo-registry:/usr/local/cargo/registry - cargo-git:/usr/local/cargo/git - cargo-target:/app/target - ./scripts/entrypoint.sh:/scripts/entrypoint.sh:ro - tunnel-url:/shared environment: DATABASE_URL: ${DATABASE_URL} PUBLIC_URL: ${PUBLIC_URL} SESSION_SECRET: ${SESSION_SECRET} RELAY_URL: ${RELAY_URL} PORT: ${PORT} TUNNEL_URL_FILE: /shared/tunnel-url CLOUDFLARE_TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN:-} # depends_on: # Uncomment if using Postgres: # postgres: # condition: service_healthy
caddy: image: caddy:2-alpine volumes: - ./scripts/dev-Caddyfile:/etc/caddy/Caddyfile:ro ports: - "3080:80" depends_on: - happyview - web
tunnel: image: alpine:latest entrypoint: ["sh", "/scripts/tunnel.sh"] volumes: - ./scripts/tunnel.sh:/scripts/tunnel.sh:ro - tunnel-url:/shared environment: CLOUDFLARE_TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN:-} TUNNEL_HOSTNAME: ${TUNNEL_HOSTNAME:-} TUNNEL_URL_FILE: /shared/tunnel-url TUNNEL_UPSTREAM: http://caddy:80 depends_on: caddy: condition: service_started restart: true restart: unless-stopped
web: image: node:24-alpine working_dir: /app command: sh -c "npm install && npm run dev" ports: - "3001:3001" volumes: - ./web:/app - web-node-modules:/app/node_modules environment: HOSTNAME: ${WEB_HOSTNAME} API_URL: ${API_URL}
volumes: # Uncomment if using Postgres: # pgdata: cargo-registry: cargo-git: cargo-target: web-node-modules: tunnel-url: