onasty/deploy/docker-compose.yml (view raw)
| 1 | services: |
| 2 | caddy: |
| 3 | image: caddy:2.7-alpine |
| 4 | container_name: onasty-caddy-prod |
| 5 | ports: |
| 6 | - "80:80" |
| 7 | - "443:443" |
| 8 | volumes: |
| 9 | - ../infra/caddy:/etc/caddy:ro |
| 10 | - ./frontend:/srv/frontend # frontend dist |
| 11 | - caddy_data:/data |
| 12 | networks: [onasty] |
| 13 | restart: unless-stopped |
| 14 | depends_on: |
| 15 | - core |
| 16 | |
| 17 | core: |
| 18 | image: onasty:core # TODO: use registry link |
| 19 | container_name: onasty-core-prod |
| 20 | ports: |
| 21 | - 8000:8000 |
| 22 | - 8001:8001 |
| 23 | environment: |
| 24 | - APP_ENV=prod |
| 25 | - APP_URL |
| 26 | - NATS_URL=nats:4222 |
| 27 | - CORS_ALLOWED_ORIGINS |
| 28 | - CORS_MAX_AGE |
| 29 | - HTTP_PORT |
| 30 | - HTTP_WRITE_TIMEOUT |
| 31 | - HTTP_READ_TIMEOUT |
| 32 | - HTTP_HEADER_MAX_SIZE_MB |
| 33 | - POSTGRESQL_DSN |
| 34 | - REDIS_ADDR |
| 35 | - REDIS_PASSWORD |
| 36 | - REDIS_DB |
| 37 | - CACHE_NOTE_TTL |
| 38 | - CACHE_USERS_TTL |
| 39 | - PASSWORD_SALT |
| 40 | - NOTE_PASSWORD_SALT |
| 41 | - JWT_SIGNING_KEY |
| 42 | - JWT_ACCESS_TOKEN_TTL |
| 43 | - JWT_REFRESH_TOKEN_TTL |
| 44 | - VERIFICATION_TOKEN_TTL |
| 45 | - RESET_PASSWORD_TOKEN_TTL |
| 46 | - CHANGE_EMAIL_TOKEN_TTL |
| 47 | - GOOGLE_CLIENTID |
| 48 | - GOOGLE_SECRET |
| 49 | - GOOGLE_REDIRECTURL |
| 50 | - GITHUB_CLIENTID |
| 51 | - GITHUB_SECRET |
| 52 | - GITHUB_REDIRECTURL |
| 53 | - METRICS_PORT |
| 54 | - METRICS_ENABLED |
| 55 | - LOG_LEVEL |
| 56 | - LOG_FORMAT |
| 57 | - LOG_SHOW_LINE |
| 58 | - RATELIMITER_TTL |
| 59 | - RATELIMITER_RPS |
| 60 | - RATELIMITER_BURST |
| 61 | - SLOW_RATELIMITER_TTL |
| 62 | - SLOW_RATELIMITER_RPS |
| 63 | - SLOW_RATELIMITER_BURST |
| 64 | restart: unless-stopped |
| 65 | networks: [onasty] |
| 66 | depends_on: |
| 67 | - mailer |
| 68 | - redis |
| 69 | - postgres |
| 70 | - nats |
| 71 | |
| 72 | mailer: |
| 73 | image: onasty:mailer # TODO: use registry link |
| 74 | container_name: onasty-mailer-prod |
| 75 | ports: |
| 76 | - 8002:8002 |
| 77 | environment: |
| 78 | - APP_URL |
| 79 | - FRONTEND_URL |
| 80 | - NATS_URL |
| 81 | - MAILGUN_FROM |
| 82 | - MAILGUN_DOMAIN |
| 83 | - MAILGUN_API_KEY |
| 84 | - LOG_LEVEL |
| 85 | - LOG_FORMAT |
| 86 | - LOG_SHOW_LINE |
| 87 | - METRICS_PORT |
| 88 | - METRICS_ENABLED |
| 89 | restart: unless-stopped |
| 90 | networks: [onasty] |
| 91 | depends_on: |
| 92 | - nats |
| 93 | |
| 94 | nats: |
| 95 | image: nats:2.10 |
| 96 | container_name: onasty-nats-prod |
| 97 | ports: |
| 98 | - 4222:4222 |
| 99 | restart: unless-stopped |
| 100 | networks: [onasty] |
| 101 | |
| 102 | redis: |
| 103 | image: redis:7.4-alpine |
| 104 | container_name: onasty-redis-prod |
| 105 | command: redis-server --appendonly yes |
| 106 | ports: |
| 107 | - 6379:6379 |
| 108 | restart: unless-stopped |
| 109 | networks: [onasty] |
| 110 | volumes: |
| 111 | - onasty-redis:/data |
| 112 | |
| 113 | postgres: |
| 114 | image: postgres:16-alpine |
| 115 | container_name: onasty-postgres-prod |
| 116 | environment: |
| 117 | POSTGRES_USER: ${POSTGRES_USER} |
| 118 | POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} |
| 119 | POSTGRES_DB: onasty |
| 120 | volumes: |
| 121 | - onasty-postgres:/var/lib/postgresql/data |
| 122 | ports: |
| 123 | - 5432:5432 |
| 124 | networks: [onasty] |
| 125 | restart: unless-stopped |
| 126 | |
| 127 | volumes: |
| 128 | onasty-postgres: |
| 129 | onasty-redis: |
| 130 | caddy_data: |
| 131 | |
| 132 | networks: |
| 133 | onasty: |