A container registry that uses the AT Protocol for manifest storage and S3 for blob storage.
atcr.io
docker
container
atproto
go
1services:
2 atcr-appview:
3 build:
4 context: .
5 dockerfile: Dockerfile.dev
6 image: atcr-appview-dev:latest
7 container_name: atcr-appview
8 ports:
9 - "5000:5000"
10 # Optional: Load from .env.appview file (create from .env.appview.example)
11 # env_file:
12 # - .env.appview
13 environment:
14 # Server configuration
15 ATCR_HTTP_ADDR: :5000
16 ATCR_DEFAULT_HOLD_DID: did:web:172.28.0.3:8080
17 # UI configuration
18 ATCR_UI_ENABLED: "true"
19 ATCR_BACKFILL_ENABLED: "true"
20 # Test mode - fallback to default hold when user's hold is unreachable
21 TEST_MODE: "true"
22 # Logging
23 ATCR_LOG_LEVEL: debug
24 volumes:
25 # Mount source code for Air hot reload
26 - .:/app
27 # Cache go modules between rebuilds
28 - go-mod-cache:/go/pkg/mod
29 # UI database (includes OAuth sessions, devices, and Jetstream cache)
30 - atcr-ui:/var/lib/atcr
31 restart: unless-stopped
32 dns:
33 - 8.8.8.8
34 - 1.1.1.1
35 networks:
36 atcr-network:
37 ipv4_address: 172.28.0.2
38 # The AppView is stateless - all storage is external:
39 # - Manifests/Tags -> ATProto PDS (via middleware)
40 # - Blobs/Layers -> Hold service (via ProxyBlobStore)
41 # - OAuth tokens -> SQLite database (atcr-ui volume)
42 # - No config.yml needed - all config via environment variables
43
44 atcr-hold:
45 env_file:
46 - ../atcr-secrets.env # Load S3/Storj credentials from external file
47 environment:
48 HOLD_PUBLIC_URL: http://172.28.0.3:8080
49 HOLD_OWNER: did:plc:pddp4xt5lgnv2qsegbzzs4xg
50 HOLD_PUBLIC: false
51 # STORAGE_DRIVER: filesystem
52 # STORAGE_ROOT_DIR: /var/lib/atcr/hold
53 TEST_MODE: true
54 # DISABLE_PRESIGNED_URLS: true
55 # Logging
56 ATCR_LOG_LEVEL: debug
57 # Storage config comes from env_file (STORAGE_DRIVER, AWS_*, S3_*)
58 build:
59 context: .
60 dockerfile: Dockerfile.hold
61 image: atcr-hold:latest
62 container_name: atcr-hold
63 ports:
64 - "8080:8080"
65 volumes:
66 # PDS data (carstore SQLite + signing keys)
67 - atcr-hold:/var/lib/atcr-hold
68 restart: unless-stopped
69 dns:
70 - 8.8.8.8
71 - 1.1.1.1
72 networks:
73 atcr-network:
74 ipv4_address: 172.28.0.3
75
76networks:
77 atcr-network:
78 driver: bridge
79 ipam:
80 config:
81 - subnet: 172.28.0.0/24
82
83volumes:
84 atcr-hold:
85 atcr-auth:
86 atcr-ui:
87 go-mod-cache: