forked from
chadtmiller.com/pds.js
A minimal AT Protocol Personal Data Server written in JavaScript.
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 relay:
22 image: ghcr.io/bluesky-social/indigo:bigsky-6fcd9317e725af1b3077f386a42b22eadcdc7d7f
23 platform: linux/amd64
24 ports:
25 - "2470:2470"
26 environment:
27 - GOLOG_LOG_LEVEL=info
28 - DATA_DIR=/data
29 - RELAY_ADMIN_KEY=localdev
30 - ATP_PLC_HOST=http://plc:2582
31 # Trust Caddy's internal CA for local HTTPS
32 - SSL_CERT_FILE=/caddy-ca/caddy/pki/authorities/local/root.crt
33 extra_hosts:
34 - "host.docker.internal:host-gateway"
35 volumes:
36 - relay_data:/data
37 - caddy_data:/caddy-ca:ro
38 command: ["/bin/sh", "-c", "cat /caddy-ca/caddy/pki/authorities/local/root.crt >> /etc/ssl/certs/ca-certificates.crt && /bigsky --api-listen :2470"]
39 depends_on:
40 plc:
41 condition: service_healthy
42 caddy:
43 condition: service_healthy
44 healthcheck:
45 test: ["CMD-SHELL", "curl -f http://localhost:2470/xrpc/_health || exit 1"]
46 interval: 2s
47 timeout: 5s
48 retries: 15
49
50 # Caddy reverse proxy - provides HTTPS for the PDS so relay can verify it
51 caddy:
52 image: caddy:2-alpine
53 ports:
54 - "3443:3443"
55 extra_hosts:
56 - "host.docker.internal:host-gateway"
57 volumes:
58 - ./docker/Caddyfile:/etc/caddy/Caddyfile:ro
59 - caddy_data:/data
60 healthcheck:
61 test: ["CMD-SHELL", "nc -z localhost 3443 || exit 1"]
62 interval: 2s
63 timeout: 5s
64 retries: 15
65 start_period: 5s
66
67 postgres:
68 image: postgres:16-alpine
69 environment:
70 - POSTGRES_USER=plc
71 - POSTGRES_PASSWORD=plc
72 - POSTGRES_DB=plc
73 volumes:
74 - plc_data:/var/lib/postgresql/data
75 healthcheck:
76 test: ["CMD-SHELL", "pg_isready -U plc"]
77 interval: 2s
78 timeout: 5s
79 retries: 10
80
81 minio:
82 image: minio/minio:latest
83 ports:
84 - "9000:9000"
85 - "9001:9001"
86 environment:
87 - MINIO_ROOT_USER=minioadmin
88 - MINIO_ROOT_PASSWORD=minioadmin
89 command: server /data --console-address ":9001"
90 volumes:
91 - minio_data:/data
92 healthcheck:
93 test: ["CMD", "mc", "ready", "local"]
94 interval: 2s
95 timeout: 5s
96 retries: 10
97
98volumes:
99 plc_data:
100 relay_data:
101 caddy_data:
102 minio_data: