/ docker-compose.yml
docker-compose.yml
1 services: 2 app: 3 build: 4 context: . 5 dockerfile: Dockerfile.dev 6 env_file: .env 7 environment: 8 - PUBLIC_NETWORK=31337 9 - CACHE_REDIS_CONNECTION_STRING=redis://redis:6379 10 - FAKE_PINATA_URL=http://fake-pinata:3000 11 - PUBLIC_IPFS_GATEWAY_URL=http://localhost:3000 12 - PUBLIC_GQL_URL=http://localhost:8080 13 - PUBLIC_INTERNAL_GQL_URL=http://graphql-api:8080 14 - MULTIPLAYER_API_URL=http://multiplayer:5001 15 - MULTIPLAYER_API_ACCESS_TOKEN=123 16 - PINATA_SDK_KEY=123 17 - PINATA_SDK_SECRET=123 18 - MEILISEARCH_HOST=http://meilisearch:7700 19 - MEILISEARCH_API_KEY=1234 20 - PUBLIC_USE_LOCAL_TESTNET_WALLET_STORE=${APP_USE_LOCAL_TESTNET_WALLET_STORE-false} 21 - LOCAL_UID=${LOCAL_UID-root} 22 - LOCAL_GID=${LOCAL_GID-root} 23 - PUBLIC_BASE_URL=http://localhost:5173 24 - PUBLIC_SUPPRESS_MISSING_VAR_IN_PROD_ERRORS=true 25 - ECOSYSTEM_API_URL=http://ecosystems:5000 26 - ECOSYSTEM_API_ACCESS_TOKEN=123 27 - GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN} 28 - PUBLIC_DRIPS_RPGF_URL=http://localhost:5293 29 - PUBLIC_INTERNAL_DRIPS_RPGF_URL=http://rpgf:5000 30 - PUBLIC_ORCID_API_URL=https://pub.sandbox.orcid.org 31 - PUBLIC_USE_LIT_OWNER_UPDATE=true 32 - PROJECT_CLAIM_API_URL=http://project-claim-api:3100 33 - PUBLIC_WAVE_API_URL=${PUBLIC_WAVE_API_URL-http://localhost:8000} 34 - PUBLIC_INTERNAL_WAVE_API_URL=${PUBLIC_INTERNAL_WAVE_API_URL-http://wave:8000} 35 - PUBLIC_WAVE_GITHUB_APP_NAME=${PUBLIC_WAVE_GITHUB_APP_NAME} 36 - PUBLIC_TURNSTILE_SITE_KEY=${PUBLIC_TURNSTILE_SITE_KEY-1x00000000000000000000AA} 37 volumes: 38 - .:/app 39 - /app/node_modules/ 40 ports: 41 - 5173:5173 42 depends_on: 43 - redis 44 - graphql-api 45 - fake-pinata 46 - project-claim-api 47 48 project-claim-api: 49 image: 'j537/project-claim-api:${PROJECT_CLAIM_API_TAG-main}' 50 pull_policy: always 51 environment: 52 - LIT_NETWORK=dev 53 - CACHE_REDIS_CONNECTION_STRING=redis://redis:6379 54 - GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN} 55 - PORT=3100 56 ports: 57 - 3100:3100 58 depends_on: 59 redis: 60 condition: service_healthy 61 healthcheck: 62 test: ['CMD', 'curl', '-f', 'http://localhost:3100/health'] 63 interval: 1s 64 timeout: 30s 65 retries: 5 66 67 redis: 68 image: redis:latest 69 restart: unless-stopped 70 healthcheck: 71 test: ['CMD', 'redis-cli', 'ping'] 72 interval: 1s 73 timeout: 30s 74 retries: 5 75 ports: 76 - 6379:6379 77 78 dripfeed: 79 image: 'j537/dripfeed:${DRIPFEED_TAG-jason-support-lit}-localtestnet' 80 pull_policy: always 81 entrypoint: bash -c "npm run db:migrate && npm run start" 82 environment: 83 - DATABASE_URL=postgresql://user:admin@postgres:5432/dripsdb 84 - DB_SCHEMA=localtestnet 85 - NETWORK=localtestnet 86 - RPC_URL=http://testnet:8545 87 - CONFIRMATIONS=0 88 - FETCH_BATCH_SIZE=5000 89 - INSERT_CHUNK_SIZE=1000 90 - PROCESS_BATCH_SIZE=100 91 - POLL_DELAY=2000 92 - MAX_CONSECUTIVE_ERRORS=10 93 - RPC_CONCURRENCY=10 94 - AUTO_HANDLE_REORGS=false 95 - LOG_LEVEL=DEBUG 96 - LOG_PRETTY=true 97 - IPFS_GATEWAY_URL=http://fake-pinata:3000 98 - CACHE_INVALIDATION_ENDPOINT=http://app:5173/api/cache/invalidate-account-ids 99 - HEALTH_PORT=3000 100 - NODE_ENV=development 101 - OTEL_DEBUG=false 102 - OTEL_SERVICE_NAME=dripfeed-dev 103 ports: 104 - 3001:3001 105 depends_on: 106 postgres: 107 condition: service_healthy 108 redis: 109 condition: service_healthy 110 fake-pinata: 111 condition: service_healthy 112 113 graphql-api: 114 image: 'j537/graphql-api:${GRAPHQL_API_TAG-jason-support-lit-orcid}' 115 pull_policy: always 116 environment: 117 - 'RPC_CONFIG={"LOCALTESTNET": { "url": "http://testnet:8545" }}' 118 - NODE_ENV=development 119 - POSTGRES_CONNECTION_STRING=postgresql://user:admin@postgres:5432/dripsdb 120 - PORT=8080 121 - PRETEND_ALL_REPOS_EXIST=false 122 - IPFS_GATEWAY_URL=http://fake-pinata:3000 123 - DRIPS_API_KEY=123 124 - GITHUB_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN} 125 - REDIS_URL=redis://redis:6379 126 - ORCID_API_ENDPOINT=${ORCID_API_ENDPOINT-https://pub.sandbox.orcid.org/v3.0} 127 - ORCID_CLIENT_ID=${ORCID_CLIENT_ID-APP-DUMMYCREDENTIALS} 128 - ORCID_CLIENT_SECRET=${ORCID_CLIENT_SECRET-00000000-0000-0000-0000-000000000000} 129 - ORCID_TOKEN_ENDPOINT=${ORCID_TOKEN_ENDPOINT-https://sandbox.orcid.org/oauth/token} 130 ports: 131 - '8080:8080' 132 depends_on: 133 postgres: 134 condition: service_healthy 135 fake-pinata: 136 condition: service_healthy 137 healthcheck: 138 test: ['CMD', 'curl', '-f', 'http://localhost:8080/health'] 139 interval: 1s 140 timeout: 30s 141 retries: 5 142 143 testnet: 144 image: 'j537/contracts:${CONTRACTS_TAG-igor-lit}-${ARCH}' 145 pull_policy: always 146 ports: 147 - '8545:8545' 148 149 fake-pinata: 150 image: 'j537/fake-pinata:main' 151 pull_policy: always 152 healthcheck: 153 test: ['CMD', 'curl', '-f', 'http://localhost:3000/health'] 154 interval: 1s 155 timeout: 30s 156 retries: 5 157 ports: 158 - '3000:3000' 159 160 multiplayer: 161 image: 'j537/multiplayer:${MULTIPLAYER_TAG-main}' 162 pull_policy: always 163 environment: 164 - 'RPC_CONFIG={"localtestnet": { "url": "http://testnet:8545" }}' 165 - GRAPHQL_URL=http://graphql-api:8080 166 - GRAPHQL_ACCESS_TOKEN=123 167 - POSTGRES_CONNECTION_STRING=postgresql://user:admin@postgres-multiplayer:5432/dripsdb 168 - DB_SCHEMA_NAME=multiplayer 169 - AUTH_STRATEGY=dev 170 - API_KEY=123 171 - SHOULD_RUN_MIGRATIONS=true 172 - PORT=5001 173 - LOG_LEVEL=debug 174 ports: 175 - 5001:5001 176 depends_on: 177 postgres-multiplayer: 178 condition: service_healthy 179 graphql-api: 180 condition: service_healthy 181 182 postgres: 183 image: postgres:16 184 restart: unless-stopped 185 environment: 186 POSTGRES_USER: user 187 POSTGRES_PASSWORD: admin 188 POSTGRES_DB: dripsdb 189 POSTGRES_INITDB_ARGS: -E UTF8 --locale=C 190 ports: 191 - 54320:5432 192 healthcheck: 193 test: ['CMD-SHELL', 'pg_isready', '-d', 'dripsdb'] 194 interval: 30s 195 timeout: 60s 196 retries: 5 197 start_period: 80s 198 199 postgres-multiplayer: 200 image: postgres:16 201 restart: unless-stopped 202 environment: 203 POSTGRES_USER: user 204 POSTGRES_PASSWORD: admin 205 POSTGRES_DB: dripsdb 206 POSTGRES_INITDB_ARGS: -E UTF8 --locale=C 207 ports: 208 - 54321:5432 209 healthcheck: 210 test: ['CMD-SHELL', 'pg_isready', '-d', 'dripsdb'] 211 interval: 30s 212 timeout: 60s 213 retries: 5 214 start_period: 80s 215 216 postgres-ecosystems: 217 image: postgres:16 218 restart: unless-stopped 219 environment: 220 POSTGRES_USER: user 221 POSTGRES_PASSWORD: admin 222 POSTGRES_DB: dripsdb 223 POSTGRES_INITDB_ARGS: -E UTF8 --locale=C 224 ports: 225 - 54322:5432 226 healthcheck: 227 test: ['CMD-SHELL', 'pg_isready', '-d', 'dripsdb'] 228 interval: 30s 229 timeout: 60s 230 retries: 5 231 start_period: 80s 232 233 ecosystems: 234 image: 'j537/ecosystems:${ECOSYSTEMS_TAG-main}' 235 entrypoint: bash -c "npm run db:run-migrations && npm run start" 236 pull_policy: always 237 environment: 238 - PORT=5000 239 - DB_CONNECTION_STRING=postgresql://user:admin@postgres-ecosystems:5432/dripsdb 240 - REDIS_CONNECTION_STRING=redis://redis:6379 241 - LOG_LEVEL=debug 242 - 'RPC_CONFIG={"31337": { "url": "http://testnet:8545" }}' 243 - WALLET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 244 - SHOULD_LOAD_QUEUE_UI=true 245 - FAKE_PINATA_URL=http://fake-pinata:3000 246 - API_KEY=123 247 - PINATA_API_KEY=123 248 - PINATA_SECRET_API_KEY=123 249 - GITHUB_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN} 250 - CONFIRMATIONS=0 251 - DISABLE_RPC_CACHE=true 252 - DISABLE_GITHUB_VALIDATION=true 253 ports: 254 - 8081:5000 255 depends_on: 256 postgres-ecosystems: 257 condition: service_healthy 258 redis: 259 condition: service_healthy 260 graphql-api: 261 condition: service_healthy 262 263 meilisearch: 264 image: getmeili/meilisearch:v1.11.3 265 environment: 266 - MEILI_ENV=development 267 - MEILI_MASTER_KEY=1234 268 - MEILI_NO_ANAYLTICS=true 269 ports: 270 - 7700:7700 271 healthcheck: 272 test: ['CMD', 'curl', '-f', 'http://localhost:7700/health'] 273 interval: 1s 274 timeout: 60s 275 retries: 10 276 277 search-sync: 278 image: 'j537/search-sync:${SEARCH_SYNC_TAG-main}' 279 pull_policy: always 280 environment: 281 - DB_CONNECTION_STRING=postgresql://user:admin@postgres:5432/dripsdb 282 - DB_SCHEMAS=localtestnet 283 - DB_POLLING_INTERVAL=10000 284 - MEILISEARCH_HOST=http://meilisearch:7700 285 - MEILISEARCH_API_KEY=1234 286 - LOG_LEVEL=debug 287 depends_on: 288 meilisearch: 289 condition: service_healthy 290 postgres: 291 condition: service_healthy 292 293 postgres-rpgf: 294 image: postgres:16 295 restart: unless-stopped 296 environment: 297 POSTGRES_USER: postgres 298 POSTGRES_PASSWORD: admin 299 POSTGRES_DB: rpgf_db 300 POSTGRES_INITDB_ARGS: -E UTF8 --locale=C 301 ports: 302 - 54323:5432 303 healthcheck: 304 test: ['CMD-SHELL', 'pg_isready', '-d', 'dripsdb'] 305 interval: 30s 306 timeout: 60s 307 retries: 5 308 start_period: 80s 309 310 rpgf: 311 image: 'j537/rpgf:${RPGF_TAG-main}' 312 pull_policy: always 313 command: bash -c "deno task db:migrate && deno task configure-chain 31337 LOCALTESTNET http://localhost:8545 false; deno task start" 314 environment: 315 - DB_CONNECTION_STRING=postgresql://postgres:admin@postgres-rpgf:5432/rpgf_db 316 - PORT=5000 317 - DRIPS_GQL_API_URL=http://graphql-api:8080 318 - DRIPS_GQL_API_KEY=123 319 - JWT_SECRET=123 320 - JWT_EXPIRATION_MINUTES=60 321 - ENABLE_DANGEROUS_TEST_ROUTES=true 322 - CORS_ALLOW_ALL_ORIGINS=true 323 - REDIS_URL=redis://redis:6379 324 ports: 325 - 5293:5000 326 depends_on: 327 postgres-rpgf: 328 condition: service_healthy 329 graphql-api: 330 condition: service_healthy 331 332 postgres-wave: 333 image: postgres:16 334 profiles: ['wave'] 335 restart: unless-stopped 336 environment: 337 POSTGRES_USER: user 338 POSTGRES_PASSWORD: admin 339 POSTGRES_DB: wave_db 340 POSTGRES_INITDB_ARGS: -E UTF8 --locale=C 341 ports: 342 - 54324:5432 343 healthcheck: 344 test: ['CMD-SHELL', 'pg_isready', '-d', 'wave_db'] 345 interval: 30s 346 timeout: 60s 347 retries: 5 348 start_period: 80s 349 350 wave: 351 image: 'j537/wave:${WAVE_TAG-main}' 352 profiles: ['wave'] 353 pull_policy: always 354 command: /usr/local/bin/wave-command.sh 355 volumes: 356 - tunnel-data:/tmp/tunnel 357 - ./docker/wave-command.sh:/usr/local/bin/wave-command.sh 358 environment: 359 - PORT=8000 360 - BASE_URL=http://localhost:8000 361 - DB_CONNECTION_STRING=postgresql://user:admin@postgres-wave:5432/wave_db 362 - REDIS_URL=redis://redis:6379 363 - MEILISEARCH_HOST=http://meilisearch:7700 364 - MEILISEARCH_MASTER_KEY=1234 365 - JWT_SECRET=j1t85O+R+4cgHNRP6QWXDjaLHrGkaEgoXm5s4NCutYY= 366 - ENCRYPTION_KEY=ikUgRhl6Eezw8Asv4C3PLa8Z5eSAv2YaavZ3jb/bTVs= 367 - LOG_LEVEL=DEBUG 368 - ENV=development 369 - FRONTEND_BASE_URL=http://localhost:5173 370 - CORS_ALLOW_ALL_ORIGINS=true 371 - GITHUB_OAUTH_CLIENT_ID=${GITHUB_OAUTH_CLIENT_ID-placeholder} 372 - GITHUB_OAUTH_CLIENT_SECRET=${GITHUB_OAUTH_CLIENT_SECRET-placeholder} 373 - GITHUB_OAUTH_CALLBACK_URL=http://localhost:5173/wave/login/callback 374 - GITHUB_APP_ID=${GITHUB_APP_ID-0000000} 375 - GITHUB_APP_PRIVATE_KEY=${GITHUB_APP_PRIVATE_KEY-placeholder} 376 - GITHUB_APP_BOT_USER_ID=${GITHUB_APP_BOT_USER_ID-placeholder} 377 - GITHUB_WEBHOOK_SECRET=${GITHUB_WEBHOOK_SECRET-1234} 378 - ENABLE_DANGEROUS_TEST_FUNCTIONALITY=true 379 ports: 380 - 8000:8000 381 depends_on: 382 postgres-wave: 383 condition: service_healthy 384 redis: 385 condition: service_healthy 386 meilisearch: 387 condition: service_healthy 388 cloudflared: 389 condition: service_healthy 390 391 cloudflared: 392 build: 393 context: ./docker 394 dockerfile: Dockerfile.cloudflared 395 profiles: ['wave'] 396 environment: 397 - WAVE_PUBLIC_URL=${WAVE_PUBLIC_URL} 398 volumes: 399 - tunnel-data:/tmp/tunnel 400 - ./docker/cloudflared-entrypoint.sh:/usr/local/bin/cloudflared-entrypoint.sh 401 healthcheck: 402 test: ['CMD-SHELL', '[ -f /tmp/tunnel/ready ] && [ $(( $(date +%s) - $(stat -c %Y /tmp/tunnel/ready) )) -lt 15 ]'] 403 interval: 5s 404 timeout: 5s 405 retries: 20 406 407 volumes: 408 tunnel-data: