diff --git a/.gitignore b/.gitignore index 67a84c58..11bc3dbd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # *database/mysql.sock File_Storage database/ +certbot/ # database/ibdata1 # database/mysql.ibd # database/undo* diff --git a/Frontend/patient_manager/Dockerfile b/Frontend/patient_manager/Dockerfile index a9780c53..23c04ed1 100644 --- a/Frontend/patient_manager/Dockerfile +++ b/Frontend/patient_manager/Dockerfile @@ -5,17 +5,8 @@ FROM debian:latest AS build-env #ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -#RUN apt-get upgrade -y -#RUN apt-get --fix-missing update -RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback python3 -#RUN apt-get install -y curl git unzip -#RUN apt-get install -y curl git unzip xz-utils zip libglu1-mesa -#RUN apt-get install -y curl git unzip wget python3 fonts-droid-fallback -#RUN apt-get clean -#ENV DEBIAN_FRONTEND=dialog -#ENV PUB_HOSTED_URL=https://pub.flutter-io.cn -#ENV FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn +RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback python3 # download Flutter SDK from Flutter Github repo RUN git clone -b master https://github.com/flutter/flutter.git /usr/local/flutter @@ -25,12 +16,6 @@ RUN git clone -b master https://github.com/flutter/flutter.git /usr/local/flutte ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:${PATH}" #ENV PATH "$PATH:/home/developer/flutter/bin" -# Run flutter doctor -#RUN flutter pub get -#RUN rmdir /usr/local/flutter/bin/cache -#RUN flutter pub cache repair -#RUN dart pub add args:^2.4.2 -#RUN flutter dart pub add args:^2.4.2 RUN flutter doctor -v # Enable flutter web @@ -42,16 +27,49 @@ RUN flutter config --enable-web # Copy files to container and build RUN mkdir /app/ COPY . /app/ -WORKDIR /app/ -# RUN flutter pub add web:^0.5.0 -# RUN flutter pub run pdfx:install_web + +# VOLUME ["/app"] + +WORKDIR /app RUN flutter upgrade RUN flutter build web -t ./lib/main_prod.dart -# Record the exposed port -EXPOSE 8080 +# RUN cd .. -# make server startup script executable and start the web server +EXPOSE 83 +# COPY /app/build/web + +# # Use Nginx to serve the app +# FROM nginx:alpine + +# #install requirements for certbot +# RUN apk add python3 py3-pip + +# # RUN apk add --no-cache py3-certbot-nginx +# RUN apk add certbot-nginx +# RUN mkdir /etc/letsencrypt + +# # Copy the build artifacts from the build stage, and the Nginx configuration +# COPY --from=build-env /app/build/web /usr/share/nginx/html +# COPY nginx.conf /etc/nginx/nginx.conf +# # COPY /certbot/conf /etc/letsencrypt +# # ./Frontend/patient_manager/certbot/conf:/etc/letsencrypt +# # - ./Frontend/patient_manager/certbot/www:/var/www/certbot + +# #RUN certbot --nginx -d mzansi-innovation-hub.co.za + +# EXPOSE 80 443 + + +# CMD ["nginx", "-g", "daemon off;"] + + +# RUN certbot --nginx -d mzansi-innovation-hub.co.za -d www.mzansi-innovation-hub.co.za + +# # Record the exposed port +# EXPOSE 8080 + +# # make server startup script executable and start the web server RUN ["chmod", "+x", "/app/server/server.sh"] ENTRYPOINT [ "/app/server/server.sh"] diff --git a/Frontend/patient_manager/server/server.sh b/Frontend/patient_manager/server/server.sh index 58e03974..87bd53c2 100644 --- a/Frontend/patient_manager/server/server.sh +++ b/Frontend/patient_manager/server/server.sh @@ -1,7 +1,7 @@ #!/bin/bash # Define the port -PORT=80 +PORT=83 # Check if the port is in use and release it if necessary. echo "Checking if port $PORT is in use..." diff --git a/docker-compose.yml b/docker-compose.yml index 766e9482..adad0e71 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,15 +36,48 @@ services: depends_on: - mysqldb + nginx: + container_name: nginx + restart: unless-stopped + image: nginx + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/nginx.conf:/etc/nginx/nginx.conf + - webApp:/usr/share/nginx/html + depends_on: + - user-interface + user-interface: container_name: MIH-UX build: context: ./Frontend/patient_manager ports: - - "80:80" + - "83:83" + volumes: + - webApp:/app/build/web + # - ./certbot/www:/var/www/certbot depends_on: - api - + + # certbot: + # image: certbot/certbot + # container_name: certbot + # volumes: + # - ./certbot/conf:/etc/letsencrypt + # - ./certbot/www:/var/www/certbot + # depends_on: + # - user-interface + # #command: certonly --email yasienmeth@gmail.com -d mzansi-innovation-hub.co.za --agree-tos --manual --preferred-challenges dns + # command: certonly --webroot -w /var/www/certbot --force-renewal --email yasienmeth@gmail.com -d mzansi-innovation-hub.co.za --agree-tos + # # command: >- + # # certonly --test-cert --reinstall --webroot --webroot-path=/var/www/certbot + # # --email yasienmeth@gmail.com --agree-tos --no-eff-email + # # -d mzansi-innovation-hub.co.za + # # depends_on: + # # - user-interface + minio: container_name: MIH-Minio image: docker.io/bitnami/minio:2022 @@ -58,8 +91,14 @@ services: - MINIO_ROOT_PASSWORD=C@rtoon1995 volumes: - Mzanzi_Innovation_Hub: - driver: local + webApp: + certbotConf: + certbotChall: +# driver: local + # driver_opts: + # type: none + # device: ./webapp1 + # o: bind # networks: # default: diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 00000000..f6684783 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,45 @@ +events { + worker_connections 1024; +} + +http { + server_tokens off; + charset utf-8; + + # always redirect to https + server { + listen 80 default_server; + + server_name mzansi-innovation-hub.co.za; + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ =404; + } + location ~ /.well-known/acme-challenge/ { + root /var/www/certbot; + } + + # return 301 https://$host$request_uri; + } + + # server { + # listen 443 ssl; + # http2 on; + # # use the certificates + # ssl_certificate /etc/letsencrypt/live/mzansi-innovation-hub.co.za/fullchain.pem; + # ssl_certificate_key /etc/letsencrypt/live/mzansi-innovation-hub.co.za/privkey.pem; + # server_name mzansi-innovation-hub.co.za; + # root /var/www/html; + # index index.php index.html index.htm; + + # location / { + # root /usr/share/nginx/html; + # index index.html; + # try_files $uri $uri/ =404; + # } + + # } +} +