A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go
at main 129 lines 3.9 kB view raw
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 env_file: 11 - ../atcr-secrets.env 12 # Optional: Load from .env.appview file (create from .env.appview.example) 13 # env_file: 14 # - .env.appview 15 # Base config: config-appview.example.yaml (passed via Air entrypoint) 16 # Env vars below override config file values for local dev 17 environment: 18 # ATCR_SERVER_CLIENT_NAME: "Seamark" 19 # ATCR_SERVER_CLIENT_SHORT_NAME: "Seamark" 20 ATCR_SERVER_MANAGED_HOLDS: did:web:172.28.0.3%3A8080 21 ATCR_SERVER_DEFAULT_HOLD_DID: did:web:172.28.0.3%3A8080 22 ATCR_SERVER_TEST_MODE: true 23 ATCR_LOG_LEVEL: debug 24 LOG_SHIPPER_BACKEND: victoria 25 LOG_SHIPPER_URL: http://172.28.0.10:9428 26 # Limit local Docker logs - real logs go to Victoria Logs 27 # Local logs just for live tailing (docker logs -f) 28 logging: 29 driver: json-file 30 options: 31 max-size: "10m" 32 max-file: "1" 33 volumes: 34 # Mount source code for Air hot reload 35 - .:/app 36 # Cache go modules between rebuilds 37 - go-mod-cache:/go/pkg/mod 38 # UI database (includes OAuth sessions, devices, and Jetstream cache) 39 - atcr-ui:/var/lib/atcr 40 restart: unless-stopped 41 dns: 42 - 8.8.8.8 43 - 1.1.1.1 44 networks: 45 atcr-network: 46 ipv4_address: 172.28.0.2 47 # The AppView is stateless - all storage is external: 48 # - Manifests/Tags -> ATProto PDS (via middleware) 49 # - Blobs/Layers -> Hold service (via ProxyBlobStore) 50 # - OAuth tokens -> SQLite database (atcr-ui volume) 51 52 atcr-hold: 53 env_file: 54 - ../atcr-secrets.env # Load S3/Storj credentials from external file 55 # Base config: config-hold.example.yaml (passed via Air entrypoint) 56 # Env vars below override config file values for local dev 57 environment: 58 HOLD_SERVER_APPVIEW_DID: did:web:172.28.0.2%3A5000 59 HOLD_SCANNER_SECRET: dev-secret 60 HOLD_SERVER_PUBLIC_URL: http://172.28.0.3:8080 61 HOLD_REGISTRATION_OWNER_DID: did:plc:pddp4xt5lgnv2qsegbzzs4xg 62 HOLD_REGISTRATION_ALLOW_ALL_CREW: true 63 HOLD_SERVER_TEST_MODE: true 64 HOLD_LOG_LEVEL: debug 65 LOG_SHIPPER_BACKEND: victoria 66 LOG_SHIPPER_URL: http://172.28.0.10:9428 67 # S3 storage config comes from env_file (AWS_*, S3_*) 68 # Limit local Docker logs - real logs go to Victoria Logs 69 # Local logs just for live tailing (docker logs -f) 70 logging: 71 driver: json-file 72 options: 73 max-size: "10m" 74 max-file: "1" 75 build: 76 context: . 77 dockerfile: Dockerfile.dev 78 args: 79 AIR_CONFIG: .air.hold.toml 80 BILLING_ENABLED: "true" 81 image: atcr-hold-dev:latest 82 container_name: atcr-hold 83 ports: 84 - "8080:8080" 85 volumes: 86 # Mount source code for Air hot reload 87 - .:/app 88 # Cache go modules between rebuilds 89 - go-mod-cache:/go/pkg/mod 90 # PDS data (carstore SQLite + signing keys) 91 - atcr-hold:/var/lib/atcr-hold 92 restart: unless-stopped 93 dns: 94 - 8.8.8.8 95 - 1.1.1.1 96 networks: 97 atcr-network: 98 ipv4_address: 172.28.0.3 99 100 # Victoria Logs for centralized log storage 101 # Uncomment to enable, then set LOG_SHIPPER_* env vars above 102 victorialogs: 103 image: victoriametrics/victoria-logs:latest 104 container_name: victorialogs 105 ports: 106 - "9428:9428" 107 volumes: 108 - victorialogs-data:/victoria-logs-data 109 command: 110 - "-storageDataPath=/victoria-logs-data" 111 - "-retentionPeriod=7d" 112 restart: unless-stopped 113 networks: 114 atcr-network: 115 ipv4_address: 172.28.0.10 116 117networks: 118 atcr-network: 119 driver: bridge 120 ipam: 121 config: 122 - subnet: 172.28.0.0/24 123 124volumes: 125 atcr-hold: 126 atcr-auth: 127 atcr-ui: 128 go-mod-cache: 129 victorialogs-data: