Highly ambitious ATProtocol AppView service and sdks
1version: '3.8'
2
3services:
4 postgres:
5 image: postgres:15
6 environment:
7 POSTGRES_DB: slices
8 POSTGRES_USER: slices
9 POSTGRES_PASSWORD: slices
10 ports:
11 - "5432:5432"
12 volumes:
13 - postgres_data:/var/lib/postgresql/data
14 - ./schema.sql:/docker-entrypoint-initdb.d/01-schema.sql
15 healthcheck:
16 test: ["CMD-SHELL", "pg_isready -U slices -d slices"]
17 interval: 5s
18 timeout: 5s
19 retries: 5
20
21 cloudflared:
22 image: cloudflare/cloudflared:latest
23 command: tunnel --no-autoupdate run --token ${CLOUDFLARE_TUNNEL_TOKEN}
24 environment:
25 - TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}
26 depends_on:
27 - aip
28 networks:
29 - default
30
31 redis:
32 image: redis:7-alpine
33 ports:
34 - "6379:6379"
35 volumes:
36 - redis_data:/data
37 healthcheck:
38 test: ["CMD", "redis-cli", "ping"]
39 interval: 5s
40 timeout: 3s
41 retries: 5
42
43 aip:
44 image: ghcr.io/bigmoves/aip/aip-sqlite:main-e445b82
45 environment:
46 EXTERNAL_BASE: "${AIP_EXTERNAL_BASE:-http://localhost:8081}"
47 HTTP_PORT: "8081"
48 DATABASE_URL: "sqlite:///data/aip.db"
49 HTTP_CLIENT_TIMEOUT: "30"
50 OAUTH_SUPPORTED_SCOPES: "openid email profile atproto transition:generic account:email blob:image/* repo:network.slices.slice repo:network.slices.lexicon repo:network.slices.actor.profile repo:network.slices.waitlist.request"
51 ENABLE_CLIENT_API: "true"
52 ADMIN_DIDS: "did:plc:bcgltzqazw5tb6k2g3ttenbj"
53 DPOP_NONCE_SEED: "local-dev-nonce-seed"
54 RUST_LOG: "aip=trace,sqlx=debug,tower_http=debug,atproto_identity=debug,atproto_oauth=debug"
55 ATPROTO_OAUTH_SIGNING_KEYS: "z42tzC26Phdvnzmm7mVgLVgH6cDy3i1A2UcH8m6XbgKVJ4zk"
56 OAUTH_SIGNING_KEYS: "z42tzC26Phdvnzmm7mVgLVgH6cDy3i1A2UcH8m6XbgKVJ4zk"
57 ports:
58 - "8081:8081"
59 volumes:
60 - aip_data:/data
61 healthcheck:
62 test: ["CMD-SHELL", "curl -f http://localhost:8081/.well-known/oauth-authorization-server || exit 1"]
63 interval: 10s
64 timeout: 5s
65 retries: 3
66
67volumes:
68 postgres_data:
69 redis_data:
70 aip_data: