services: atcr-appview: build: context: . dockerfile: Dockerfile.dev image: atcr-appview-dev:latest container_name: atcr-appview ports: - "5000:5000" env_file: - ../atcr-secrets.env # Optional: Load from .env.appview file (create from .env.appview.example) # env_file: # - .env.appview # Base config: config-appview.example.yaml (passed via Air entrypoint) # Env vars below override config file values for local dev environment: # ATCR_SERVER_CLIENT_NAME: "Seamark" # ATCR_SERVER_CLIENT_SHORT_NAME: "Seamark" ATCR_SERVER_MANAGED_HOLDS: did:web:172.28.0.3%3A8080 ATCR_SERVER_DEFAULT_HOLD_DID: did:web:172.28.0.3%3A8080 ATCR_SERVER_TEST_MODE: true ATCR_LOG_LEVEL: debug LOG_SHIPPER_BACKEND: victoria LOG_SHIPPER_URL: http://172.28.0.10:9428 # Limit local Docker logs - real logs go to Victoria Logs # Local logs just for live tailing (docker logs -f) logging: driver: json-file options: max-size: "10m" max-file: "1" volumes: # Mount source code for Air hot reload - .:/app # Cache go modules between rebuilds - go-mod-cache:/go/pkg/mod # UI database (includes OAuth sessions, devices, and Jetstream cache) - atcr-ui:/var/lib/atcr restart: unless-stopped dns: - 8.8.8.8 - 1.1.1.1 networks: atcr-network: ipv4_address: 172.28.0.2 # The AppView is stateless - all storage is external: # - Manifests/Tags -> ATProto PDS (via middleware) # - Blobs/Layers -> Hold service (via ProxyBlobStore) # - OAuth tokens -> SQLite database (atcr-ui volume) atcr-hold: env_file: - ../atcr-secrets.env # Load S3/Storj credentials from external file # Base config: config-hold.example.yaml (passed via Air entrypoint) # Env vars below override config file values for local dev environment: HOLD_SERVER_APPVIEW_DID: did:web:172.28.0.2%3A5000 HOLD_SCANNER_SECRET: dev-secret HOLD_SERVER_PUBLIC_URL: http://172.28.0.3:8080 HOLD_REGISTRATION_OWNER_DID: did:plc:pddp4xt5lgnv2qsegbzzs4xg HOLD_REGISTRATION_ALLOW_ALL_CREW: true HOLD_SERVER_TEST_MODE: true HOLD_LOG_LEVEL: debug LOG_SHIPPER_BACKEND: victoria LOG_SHIPPER_URL: http://172.28.0.10:9428 # S3 storage config comes from env_file (AWS_*, S3_*) # Limit local Docker logs - real logs go to Victoria Logs # Local logs just for live tailing (docker logs -f) logging: driver: json-file options: max-size: "10m" max-file: "1" build: context: . dockerfile: Dockerfile.dev args: AIR_CONFIG: .air.hold.toml BILLING_ENABLED: "true" image: atcr-hold-dev:latest container_name: atcr-hold ports: - "8080:8080" volumes: # Mount source code for Air hot reload - .:/app # Cache go modules between rebuilds - go-mod-cache:/go/pkg/mod # PDS data (carstore SQLite + signing keys) - atcr-hold:/var/lib/atcr-hold restart: unless-stopped dns: - 8.8.8.8 - 1.1.1.1 networks: atcr-network: ipv4_address: 172.28.0.3 # Victoria Logs for centralized log storage # Uncomment to enable, then set LOG_SHIPPER_* env vars above victorialogs: image: victoriametrics/victoria-logs:latest container_name: victorialogs ports: - "9428:9428" volumes: - victorialogs-data:/victoria-logs-data command: - "-storageDataPath=/victoria-logs-data" - "-retentionPeriod=7d" restart: unless-stopped networks: atcr-network: ipv4_address: 172.28.0.10 networks: atcr-network: driver: bridge ipam: config: - subnet: 172.28.0.0/24 volumes: atcr-hold: atcr-auth: atcr-ui: go-mod-cache: victorialogs-data: