all repos

onasty @ d4ca41d

a one-time notes service

onasty/deploy/docker-compose.yml (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
chore: add deploy suite (#210), 8 months ago
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: