File size: 2,748 Bytes
565a379
 
 
 
 
 
 
 
 
 
 
 
 
d1ec696
565a379
d1ec696
 
 
 
565a379
 
 
d1ec696
3659da9
d1ec696
 
 
 
565a379
 
 
 
d1ec696
565a379
 
 
 
 
d1ec696
565a379
d1ec696
 
 
 
565a379
 
 
 
d1ec696
3659da9
d1ec696
 
 
565a379
d1ec696
 
 
565a379
d1ec696
 
 
 
565a379
 
 
d1ec696
3659da9
d1ec696
 
 
 
565a379
 
 
 
 
 
 
 
 
 
 
d1ec696
3659da9
d1ec696
 
 
565a379
 
 
 
 
 
 
 
 
 
 
d1ec696
3659da9
d1ec696
 
 
565a379
3659da9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
565a379
 
 
 
 
 
 
3659da9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
version: '3.8'

services:
  api:
    build: .
    container_name: mathminds_api
    ports:
      - "8000:8000"
    env_file:
      - .env
    environment:
      - REDIS_URL=redis://redis:6379/0
      - MONGO_URI=mongodb://mongo:27017/mathminds
      - ENV=production
    depends_on:
      redis:
        condition: service_healthy
      mongo:
        condition: service_healthy
    networks:
      - mathminds_net
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8000/health" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

  worker:
    build: .
    container_name: mathminds_worker
    command: celery -A app.worker.celery_app worker --loglevel=info --pool=solo
    env_file:
      - .env
    environment:
      - REDIS_URL=redis://redis:6379/0
      - MONGO_URI=mongodb://mongo:27017/mathminds
      - ENV=production
    depends_on:
      redis:
        condition: service_healthy
      mongo:
        condition: service_healthy
    networks:
      - mathminds_net
    restart: unless-stopped

  frontend:
    build:
      context: .
      dockerfile: frontend/Dockerfile
    container_name: mathminds_frontend
    ports:
      - "8501:8501"
    env_file:
      - .env
    environment:
      - BACKEND_URL=http://api:8000
    depends_on:
      api:
        condition: service_healthy
    networks:
      - mathminds_net
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8501/_stcore/health" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

  redis:
    image: redis:alpine
    container_name: mathminds_redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    networks:
      - mathminds_net
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 10s
      timeout: 5s
      retries: 5

  mongo:
    image: mongo:latest
    container_name: mathminds_mongo
    ports:
      - "27017:27017"
    volumes:
      - mongo_data:/data/db
    networks:
      - mathminds_net
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "mongosh", "--eval", "db.adminCommand('ping')" ]
      interval: 10s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    container_name: mathminds_n8n
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - WEBHOOK_URL=http://localhost:5678/
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - mathminds_net
    restart: unless-stopped

networks:
  mathminds_net:
    driver: bridge

volumes:
  redis_data:
  mongo_data:
  n8n_data: