grain.social is a photo sharing platform built on atproto.
grain.social
atproto
photography
appview
1services:
2 plc:
3 build:
4 context: https://github.com/did-method-plc/did-method-plc.git
5 dockerfile: packages/server/Dockerfile
6 ports:
7 - "2582:2582"
8 environment:
9 - DATABASE_URL=postgres://plc:plc@postgres:5432/plc
10 - PORT=2582
11 command: ["dumb-init", "node", "--enable-source-maps", "../dist/bin.js"]
12 depends_on:
13 postgres:
14 condition: service_healthy
15 healthcheck:
16 test: ["CMD-SHELL", "wget -q --spider http://localhost:2582/_health || exit 1"]
17 interval: 2s
18 timeout: 5s
19 retries: 15
20
21 pds:
22 image: ghcr.io/bluesky-social/pds:latest
23 ports:
24 - "2583:2583"
25 environment:
26 - PDS_HOSTNAME=localhost
27 - PDS_PORT=2583
28 - PDS_DID_PLC_URL=http://plc:2582
29 - PDS_DATA_DIRECTORY=/pds
30 - PDS_BLOBSTORE_DISK_LOCATION=/pds/blobs
31 - PDS_JWT_SECRET=dev-jwt-secret
32 - PDS_ADMIN_PASSWORD=dev-admin
33 - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
34 - PDS_INVITE_REQUIRED=false
35 - PDS_DEV_MODE=true
36 - LOG_ENABLED=true
37 volumes:
38 - pds_data:/pds
39 - ./patches/pds-csrf-no-secure.js:/app/node_modules/.pnpm/@atproto+oauth-provider@0.15.9/node_modules/@atproto/oauth-provider/dist/router/assets/csrf.js:ro
40 depends_on:
41 plc:
42 condition: service_healthy
43 healthcheck:
44 test: ["CMD-SHELL", "wget -q --spider http://localhost:2583/xrpc/_health || exit 1"]
45 interval: 2s
46 timeout: 5s
47 retries: 15
48
49 postgres:
50 image: postgres:16-alpine
51 environment:
52 - POSTGRES_USER=plc
53 - POSTGRES_PASSWORD=plc
54 - POSTGRES_DB=plc
55 volumes:
56 - plc_data:/var/lib/postgresql/data
57 healthcheck:
58 test: ["CMD-SHELL", "pg_isready -U plc"]
59 interval: 2s
60 timeout: 5s
61 retries: 10
62
63volumes:
64 pds_data:
65 plc_data: