grain.social is a photo sharing platform built on atproto.
1name: grain_infra
2services:
3 maildev:
4 image: maildev/maildev
5 restart: always
6 environment:
7 - TZ=America/Los_Angeles
8 - MAILDEV_WEB_PORT=1080
9 - MAILDEV_SMTP_PORT=1025
10 ports:
11 - "8050:1080"
12 - "1025:1025"
13 logging:
14 driver: "json-file"
15 options:
16 max-size: "1m"
17
18 caddy:
19 container_name: caddy
20 image: caddy:2
21 depends_on:
22 - pds
23 restart: unless-stopped
24 cap_add:
25 - NET_ADMIN
26 ports:
27 - "80:80"
28 - "443:443"
29 - "443:443/udp"
30 volumes:
31 - ./Caddyfile:/etc/caddy/Caddyfile
32 - caddy_data:/data
33 - caddy_config:/config
34
35 pds:
36 image: ghcr.io/bluesky-social/pds:0.4
37 container_name: pds
38 restart: unless-stopped
39 ports:
40 - '4001:3000'
41 volumes:
42 - pds:/pds
43 env_file:
44 - ./pds.env
45
46 plc:
47 image: ghcr.io/bluesky-social/did-method-plc:plc-f2ab7516bac5bc0f3f86842fa94e996bd1b3815b
48 platform: linux/amd64
49 container_name: plc
50 restart: unless-stopped
51 ports:
52 - '4000:8080'
53 depends_on:
54 - plc_db
55 environment:
56 DEBUG_MODE: 1
57 LOG_ENABLED: "true"
58 LOG_LEVEL: "debug"
59 LOG_DESTINATION: 1
60 DB_CREDS_JSON: &DB_CREDS_JSON '{"username":"pg","password":"password","host":"plc_db","port":5432}'
61 DB_MIGRATE_CREDS_JSON: *DB_CREDS_JSON
62 PLC_VERSION: 0.0.1
63 PORT: 8080
64
65 plc_db:
66 image: postgres:14.4-alpine
67 container_name: plc_db
68 environment:
69 - POSTGRES_USER=pg
70 - POSTGRES_PASSWORD=password
71 ports:
72 - '5433:5432'
73 volumes:
74 - plc:/var/lib/postgresql/data
75
76 jetstream:
77 container_name: jetstream
78 image: ghcr.io/bluesky-social/jetstream:sha-0ab10bd
79 restart: unless-stopped
80 volumes:
81 - jetstream:/data
82 environment:
83 - JETSTREAM_DATA_DIR=/data
84 # livness check interval to restart when no events are received (default: 15sec)
85 - JETSTREAM_LIVENESS_TTL=300s
86 - JETSTREAM_WS_URL=ws://pds:3000/xrpc/com.atproto.sync.subscribeRepos
87
88volumes:
89 caddy_data:
90 caddy_config:
91 pds:
92 plc:
93 jetstream: