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/ 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: registry.supertokens.io/supertokens/supertokens-mysql depends_on: - mysqldb ports: - 3567:3567 environment: REFRESH_TOKEN_VALIDITY: '1440' ACCESS_TOKEN_VALIDITY: '3600' 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: image: phpmyadmin/phpmyadmin container_name: MIH-phpmyadmin environment: PMA_HOST: mysqlDB PMA_PORT: 3306 PMA_ARBITRARY: networks: - MIH-network restart: always ports: - 8081:80 depends_on: - mysqldb #============== Nginx Proxy Server ==================================================================== nginx: container_name: nginx restart: unless-stopped image: nginx ports: - 80:80 - 443:443 volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - certbotConf:/etc/letsencrypt - certbotChall:/var/www/certbot depends_on: - user-interface networks: - MIH-network profiles: [ 'prod' ] #============== Flutter App ==================================================================== user-interface: container_name: MIH-UX build: context: ./Frontend/patient_manager ports: - "83:83" networks: - MIH-network depends_on: - api #============== Cert Not ==================================================================== 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 yasienmeth@gmail.com -d mzansi-innovation-hub.co.za -d app.mzansi-innovation-hub.co.za -d api.mzansi-innovation-hub.co.za -d minio.mzansi-innovation-hub.co.za -d monitor.mzansi-innovation-hub.co.za --agree-tos networks: - MIH-network depends_on: - nginx profiles: [ 'withCert' ] #============== Minio File Storage ==================================================================== minio: container_name: MIH-Minio hostname: minio image: docker.io/bitnami/minio:2022 ports: - '9000:9000' - '9001:9001' volumes: - './File_Storage:/data' environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PW} networks: - MIH-network #============== Minio File Storage ==================================================================== portainer: container_name: MIH-Monitor image: portainer/portainer-ce:2.20.3 ports: - 9443:9443 volumes: - data:/data - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped networks: - MIH-network #============== Firebaase ==================================================================== # firebase: # container_name: MIH-firebase-emulator # build: # context: ./Firebase-emulator # environment: # DATA_DIRECTORY: "firebase/data" # ports: # - 8082:8080 # FIRESTORE_PORT # - 5005:5005 # FIRESTORE_WS_PORT # - 4000:4000 # UI_PORT # - 9099:9099 # AUTH_PORT # volumes: # - ./Firebase-emulator/firebase:/srv/firebase:rw # # - ./cache:/root/.cache/:rw # # - ~/.config/:/root/.config # - ./Firebase-emulator/firebase/data:/srv/firebase/data:rw # firbase: # build: # context: ./Firebase # dockerfile: Dockerfile # args: # - FIREBASE_VERSION=13.3.0 # container_name: MIH-firebase # stop_grace_period: 1m # environment: # FIREBASE_AUTH_EMULATOR_HOST: "localhost:9099" # FIRESTORE_EMULATOR_HOST: "localhost:8082" # PUBSUB_EMULATOR_HOST: "localhost:8085" # FUNCTIONS_EMULATOR_HOST: "localhost:5001" # FIREBASE_PROJECT: "test-project" # GCLOUD_PROJECT: "test-project" # FORCE_COLOR: 'true' # DATA_DIRECTORY: "data" # CHOKIDAR_USEPOLLING: 'true' # ports: # - "4000:4001" # ui # - "4400:4401" # hub # - "4600:4601" # logging # - "5001:5002" # functions # - "8082:8081" # firestore # - "8085:8086" # pubsub # - "9005:9001" # database # - "9099:9100" # auth # - "9199:9200" # Storage # - "6000:6001" # Hosting # volumes: # - ./firebase:/srv/firebase:rw # - ./cache:/root/.cache/:rw # - ~/.config/:/root/.config # - ./firebase/data:/srv/firebase/data:rw # networks: # - MIH-network #============== Named Volumes ==================================================================== volumes: certbotConf: certbotChall: data: #============== MIH Network ==================================================================== networks: MIH-network: driver: bridge