From d5349d981c90763ca6738c059c23bf4874b61f22 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Thu, 29 Jan 2026 11:11:25 +0200 Subject: [PATCH] update architecture --- docker-compose.yml | 381 ++++++++++++++++++++++----------------------- 1 file changed, 190 insertions(+), 191 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a688cebe..c3b3b6d6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,189 +1,57 @@ +#============== MIH Network ==================================================================== +networks: + MIH_Network: + driver: bridge services: - #============== API Hub ==================================================================== - api: - build: - context: ./backend - target: builder - container_name: MIH-API-Hub - #command: sh -c "sleep 10s; uvicorn backend.main:app --reload --port=8080 --host=0.0.0.0" - #============Dev================= - # command: sh -c "sleep 10s; fastapi dev main.py --port 8080" - #============prod================= - #command: sh -c "sleep 10s; fastapi run backend/main.py --proxy-headers --port 8080" - ports: - - 8080:80 - volumes: - - ./backend:/app - networks: - - MIH-network - depends_on: - - mysqldb - #============== My SQL DB ==================================================================== - mysqldb: - #build: ./database/ - platform: linux/amd64 - image: mysql:5.7 - container_name: MIH-Database - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${SQL_ROOT_PW} - MYSQL_USER: ${SQL_USER} - MYSQL_PASSWORD: ${SQL_USER_PW} - MYSQL_DATABASE: ${SUPERTOKENS_DB} - networks: - - MIH-network - ports: - - '3306:3306' - volumes: - - ./database:/var/lib/mysql - #============== Super Token Auth ==================================================================== - supertokens: - container_name: MIH-SuperTokens - image: supertokens/supertokens-mysql:latest - # image: registry.supertokens.io/supertokens/supertokens-mysql - depends_on: - - mysqldb - ports: - - 3567:3567 - environment: - REFRESH_TOKEN_VALIDITY: '604800' - ACCESS_TOKEN_VALIDITY: '86400' - PASSWORD_RESET_TOKEN_LIFETIME: '7200000' - MYSQL_USER: ${SQL_USER} - MYSQL_PASSWORD: ${SQL_USER_PW} - MYSQL_HOST: mysqldb - MYSQL_PORT: 3306 - MYSQL_DATABASE_NAME: ${SUPERTOKENS_DB} - API_KEYS: ${SUPERTOKENS_API_KEY} - networks: - - MIH-network - restart: unless-stopped - healthcheck: - test: > - bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' - interval: 10s - timeout: 5s - retries: 5 - #============== PHP My Admin ==================================================================== - # phpmyadmin: - # platform: linux/amd64 - # image: phpmyadmin/phpmyadmin - # container_name: MIH-phpmyadmin - # environment: - # PMA_HOST: mysqlDB - # PMA_PORT: 3306 - # PMA_ARBITRARY: - # networks: - # - MIH-network - # restart: always + #============== Nginx Proxy Server Old ==================================================================== + # nginx: + # container_name: nginx + # restart: unless-stopped + # image: nginx # ports: - # - 8081:80 + # - 80:80 + # - 443:443 + # volumes: + # - ./nginx/nginx.conf:/etc/nginx/nginx.conf + # - certbotConf:/etc/letsencrypt + # - certbotChall:/var/www/certbot # depends_on: - # - mysqldb - #============== Nginx Proxy Server ==================================================================== - nginx: - container_name: nginx + # - MIH_UX + # networks: + # - MIH_Network + # profiles: [ 'prod' ] + #============== Cert Bot Old ==================================================================== + # certbot: + # image: certbot/certbot + # container_name: certbot + # volumes: + # - certbotConf:/etc/letsencrypt + # - certbotChall:/var/www/certbot + # #command: certonly --test-cert --webroot -w /var/www/certbot --force-renewal --email yasienmeth@gmail.com -d mzansi-innovation-hub.co.za -d www.mzansi-innovation-hub.co.za --agree-tos + # command: certonly --webroot -w /var/www/certbot --force-renewal --email ${CERTBOT_EMAIL} -d ${CERTBOT_APP_DOMAIN} -d ${CERTBOT_API_DOMAIN} -d ${CERTBOT_STORAGE_DOMAIN} -d ${CERTBOT_MONITOR_DOMAIN} -d ${CERTBOT_AI_DOMAIN} --agree-tos + # networks: + # - MIH_Network + # depends_on: + # - nginx + # profiles: [ 'withCert' ] + #============== Nginx Proxy Manager ==================================================================== + MIH_NGINX: + container_name: MIH_NGINX + image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped - image: nginx ports: - - 80:80 - - 443:443 + - '80:80' # Public HTTP + - '443:443' # Public HTTPS + - '81:81' # Admin Web Port volumes: - - ./nginx/nginx.conf:/etc/nginx/nginx.conf - - certbotConf:/etc/letsencrypt - - certbotChall:/var/www/certbot - depends_on: - - user-interface + - ./mih_nginx/data:/data + - ./mih_nginx/letsencrypt:/etc/letsencrypt networks: - - MIH-network - profiles: [ 'prod' ] - #============== MIH-UX Flutter ==================================================================== - user-interface: - container_name: MIH-UX - build: - context: ./Frontend - ports: - - "83:83" - networks: - - MIH-network - depends_on: - - api - #============== Cert Bot ==================================================================== - certbot: - image: certbot/certbot - container_name: certbot - volumes: - - certbotConf:/etc/letsencrypt - - certbotChall:/var/www/certbot - #command: certonly --test-cert --webroot -w /var/www/certbot --force-renewal --email yasienmeth@gmail.com -d mzansi-innovation-hub.co.za -d www.mzansi-innovation-hub.co.za --agree-tos - command: certonly --webroot -w /var/www/certbot --force-renewal --email ${CERTBOT_EMAIL} -d ${CERTBOT_APP_DOMAIN} -d ${CERTBOT_API_DOMAIN} -d ${CERTBOT_STORAGE_DOMAIN} -d ${CERTBOT_MONITOR_DOMAIN} -d ${CERTBOT_AI_DOMAIN} --agree-tos - networks: - - MIH-network - depends_on: - - nginx - profiles: [ 'withCert' ] - #============== Minio File Storage ==================================================================== - minio: - platform: linux/amd64 - container_name: MIH-Minio - hostname: minio - # image: docker.io/bitnami/minio:2022 - image: minio/minio - ports: - - '9000:9000' - - '9001:9001' - volumes: - - './File_Storage:/data' - environment: - MINIO_ROOT_USER: ${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PW} - # MINIO_SERVER_URL: ${MINIO_SERVER_URL} - networks: - - MIH-network - command: ["server", "/data", "--console-address", ":9001"] - #============== MIH-Monitor Portainer ==================================================================== - portainer: - container_name: MIH-Monitor - image: portainer/portainer-ce:2.20.3 - ports: - - 9444:9443 - volumes: - - data:/data - - /var/run/docker.sock:/var/run/docker.sock - restart: unless-stopped - networks: - - MIH-network - #============== MIH-AI Ollama ==================================================================== - ollama: - container_name: MIH-AI - image: ollama/ollama:latest - ports: - - 11434:11434 - volumes: - # - ./Mzansi_AI:/code - - ./Mzansi_AI/ollama/ollama:/root/.ollama - pull_policy: always - tty: true - restart: always - environment: - - OLLAMA_ORIGINS=* - - OLLAMA_KEEP_ALIVE=24h - - OLLAMA_HOST=0.0.0.0 - networks: - - MIH-network -# === Added section for NVIDIA GPU acceleration === - # runtime: nvidia - # deploy: - # resources: - # reservations: - # devices: - # - driver: nvidia - # count: all # or specify a number of GPUs - # capabilities: [ gpu ] + - MIH_Network #============== GITEA ==================================================================== - MIH-GITEA: + MIH_GITEA: image: gitea/gitea:latest - container_name: MIH-GITEA + container_name: MIH_GITEA environment: - USER_UID=1000 - USER_GID=1000 @@ -194,7 +62,7 @@ services: - GITEA__database__PASSWD=gitea_password restart: always networks: - - MIH-network + - MIH_Network volumes: - ./mih_git/gitea:/data - /etc/timezone:/etc/timezone:ro @@ -205,10 +73,9 @@ services: depends_on: MIH-GITEA-DB: condition: service_healthy - - MIH-GITEA-DB: + MIH_GITEA_DB: image: mysql:8.0 - container_name: MIH-GITEA-DB + container_name: MIH_GITEA_DB restart: always environment: - MYSQL_ROOT_PASSWORD=gitea_root_password @@ -216,7 +83,7 @@ services: - MYSQL_PASSWORD=gitea_password - MYSQL_DATABASE=gitea networks: - - MIH-network + - MIH_Network volumes: - ./mih_git/mysql:/var/lib/mysql healthcheck: @@ -224,6 +91,147 @@ services: interval: 10s timeout: 5s retries: 5 + #============== Super Token Auth ==================================================================== + MIH_SuperTokens: + container_name: MIH_SuperTokens + image: supertokens/supertokens-mysql:latest + # image: registry.supertokens.io/supertokens/supertokens-mysql + depends_on: + - MIH_DB + ports: + - 3567:3567 + environment: + REFRESH_TOKEN_VALIDITY: '604800' + ACCESS_TOKEN_VALIDITY: '86400' + PASSWORD_RESET_TOKEN_LIFETIME: '7200000' + MYSQL_USER: ${SQL_USER} + MYSQL_PASSWORD: ${SQL_USER_PW} + MYSQL_HOST: MIH_DB + MYSQL_PORT: 3306 + MYSQL_DATABASE_NAME: ${SUPERTOKENS_DB} + API_KEYS: ${SUPERTOKENS_API_KEY} + networks: + - MIH_Network + restart: unless-stopped + healthcheck: + test: > + bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' + interval: 10s + timeout: 5s + retries: 5 + #============== MIH-UX Flutter ==================================================================== + MIH_UX: + container_name: MIH_UX + build: + context: ./mih_ui + ports: + - "83:83" + networks: + - MIH_Network + depends_on: + - MIH_API_Hub + #============== API Hub ==================================================================== + MIH_API_Hub: + build: + context: ./mih_api_hub + target: builder + container_name: MIH_API_Hub + ports: + - 8080:80 + volumes: + - ./mih_api_hub:/app + networks: + - MIH_Network + depends_on: + - MIH_DB + #============== My SQL DB ==================================================================== + MIH_DB: + platform: linux/amd64 + image: mysql:5.7 + container_name: MIH_DB + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${SQL_ROOT_PW} + MYSQL_USER: ${SQL_USER} + MYSQL_PASSWORD: ${SQL_USER_PW} + MYSQL_DATABASE: ${SUPERTOKENS_DB} + networks: + - MIH_Network + ports: + - '3306:3306' + volumes: + - ./mih_db:/var/lib/mysql + #============== PHP My Admin ==================================================================== + # phpmyadmin: + # platform: linux/amd64 + # image: phpmyadmin/phpmyadmin + # container_name: MIH-phpmyadmin + # environment: + # PMA_HOST: MIH_DB + # PMA_PORT: 3306 + # PMA_ARBITRARY: + # networks: + # - MIH_Network + # restart: always + # ports: + # - 8081:80 + # depends_on: + # - MIH_DB + #============== Minio File Storage ==================================================================== + MIH_Minio: + platform: linux/amd64 + container_name: MIH_Minio + hostname: MIH_Minio + image: minio/minio + ports: + - '9000:9000' + - '9001:9001' + volumes: + - './mih_minio:/data' + environment: + MINIO_ROOT_USER: ${MINIO_ROOT_USER} + MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PW} + networks: + - MIH_Network + command: ["server", "/data", "--console-address", ":9001"] + #============== MIH-Monitor Portainer ==================================================================== + MIH_Monitor: + container_name: MIH_Monitor + image: portainer/portainer-ce:2.20.3 + ports: + - 9444:9443 + volumes: + - ./mih_monitor/data:/data + - /var/run/docker.sock:/var/run/docker.sock + restart: unless-stopped + networks: + - MIH_Network + #============== MIH-AI Ollama ==================================================================== + MIH_AI: + container_name: MIH_AI + image: ollama/ollama:latest + ports: + - 11434:11434 + volumes: + - ./mih_ai/ollama/ollama:/root/.ollama + pull_policy: always + tty: true + restart: always + environment: + - OLLAMA_ORIGINS=* + - OLLAMA_KEEP_ALIVE=24h + - OLLAMA_HOST=0.0.0.0 + networks: + - MIH_Network +# === Added section for NVIDIA GPU acceleration === + # runtime: nvidia + # deploy: + # resources: + # reservations: + # devices: + # - driver: nvidia + # count: all # or specify a number of GPUs + # capabilities: [ gpu ] #============== Firebaase ==================================================================== # firebase: # container_name: MIH-firebase-emulator @@ -243,12 +251,3 @@ services: # # - ./cache:/root/.cache/:rw # # - ~/.config/:/root/.config # - ./Firebase-emulator/firebase/data:/srv/firebase/data:rw -#============== Named Volumes ==================================================================== -volumes: - certbotConf: - certbotChall: - data: -#============== MIH Network ==================================================================== -networks: - MIH-network: - driver: bridge