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: 'C@rtoon1995' MYSQL_USER: 'yaso' MYSQL_PASSWORD: 'C@rtoon1995' MYSQL_DATABASE: 'supertokens' 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: MYSQL_USER: 'yaso' MYSQL_PASSWORD: 'C@rtoon1995' MYSQL_HOST: mysqldb MYSQL_PORT: 3306 MYSQL_DATABASE_NAME: supertokens API_KEYS: 'leatucczyixqwkqqdrhayiwzeofkltds' 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 --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=yaso - MINIO_ROOT_PASSWORD=C@rtoon1995 networks: - MIH-network #============== Named Volumes ==================================================================== volumes: certbotConf: certbotChall: #============== MIH Network ==================================================================== networks: MIH-network: driver: bridge