docker-compose.yml 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. services:
  2. postgres:
  3. image: docker.m.daocloud.io/library/postgres:16-alpine
  4. container_name: celestia-postgres
  5. restart: unless-stopped
  6. environment:
  7. POSTGRES_USER: ${DB_USER:-celestia}
  8. POSTGRES_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD is required}
  9. POSTGRES_DB: ${DB_NAME:-celestia_trace}
  10. volumes:
  11. - pgdata:/var/lib/postgresql/data
  12. ports:
  13. - "5433:5432"
  14. healthcheck:
  15. test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-celestia} -d ${DB_NAME:-celestia_trace}"]
  16. interval: 5s
  17. timeout: 5s
  18. retries: 5
  19. backend:
  20. build: .
  21. container_name: celestia-backend
  22. restart: unless-stopped
  23. depends_on:
  24. postgres:
  25. condition: service_healthy
  26. environment:
  27. DB_HOST: postgres
  28. DB_PORT: 5432
  29. DB_USER: ${DB_USER:-celestia}
  30. DB_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD is required}
  31. DB_NAME: ${DB_NAME:-celestia_trace}
  32. JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required}
  33. ACCESS_TOKEN_TTL: ${ACCESS_TOKEN_TTL:-30m}
  34. REFRESH_TOKEN_TTL: ${REFRESH_TOKEN_TTL:-720h}
  35. STORAGE_PATH: /data/uploads
  36. SERVER_PORT: 8080
  37. GIN_MODE: release
  38. expose:
  39. - "8080"
  40. volumes:
  41. - uploads:/data/uploads
  42. networks:
  43. default:
  44. proxy:
  45. aliases:
  46. - celestia-backend
  47. healthcheck:
  48. test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/v1/health >/dev/null || exit 1"]
  49. interval: 10s
  50. timeout: 3s
  51. retries: 5
  52. start_period: 10s
  53. logging:
  54. driver: json-file
  55. options:
  56. max-size: "10m"
  57. max-file: "3"
  58. volumes:
  59. pgdata:
  60. uploads:
  61. networks:
  62. proxy:
  63. name: meishi_ccdw_life_default
  64. external: true