From 556a4bdd485ead1df415dcdc684d720d22720909 Mon Sep 17 00:00:00 2001 From: Nazneenp <115880265+Nazneenp@users.noreply.github.com> Date: Sun, 6 Oct 2024 10:47:50 +0000 Subject: [PATCH 1/3] added docker as a runtime option --- Dockerfile | 17 +++++++++++++++++ docker-compose.yml | 10 ++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3a20c03 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +# official python image +FROM python:3.9-slim + +# setting working dir +WORKDIR /localfiletransfer + +# copy flask app in to the container +COPY . /localfiletransfer + +# installing requirements +RUN pip install --no-cache-dir -r requirements.txt + +# exposing port 5000 +EXPOSE 5000 + +# command to run the app +CMD [ "python3", "app.py" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fbb65f8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.9' + +services: + web: + build: . + ports: + - "5000:5000" + volumes: + - ./uploads:/localfiletransfer/uploads + - ./downloads:/localfiletransfer/downloads From 6ad3e83958493894a8490f6a5a5998c5f4f2643c Mon Sep 17 00:00:00 2001 From: Nazneenp <115880265+Nazneenp@users.noreply.github.com> Date: Wed, 9 Oct 2024 09:35:07 +0000 Subject: [PATCH 2/3] fix the page not loading issue --- app.py | 11 +---------- docker-compose.yml | 3 +-- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index a281463..03a1473 100644 --- a/app.py +++ b/app.py @@ -55,16 +55,7 @@ def download_file(filename): return response def get_ip(): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - try: - # doesn't even have to be reachable - s.connect(('10.255.255.255', 1)) - IP = s.getsockname()[0] - except Exception: - IP = '127.0.0.1' - finally: - s.close() - return IP + return socket.gethostbyname(socket.gethostname()) def generate_qr_code(url): qr = qrcode.QRCode( diff --git a/docker-compose.yml b/docker-compose.yml index fbb65f8..501934b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,7 @@ version: '3.9' services: web: build: . - ports: - - "5000:5000" + network_mode: "host" volumes: - ./uploads:/localfiletransfer/uploads - ./downloads:/localfiletransfer/downloads From 116b7660230c35c1f47ec567232575ca886c0d77 Mon Sep 17 00:00:00 2001 From: Nazneenp <115880265+Nazneenp@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:31:09 +0000 Subject: [PATCH 3/3] Fix: getting host IP from different os --- Dockerfile | 2 +- app.py | 5 ++++- docker-compose.yml | 17 +++++++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3a20c03..f63adff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,4 +14,4 @@ RUN pip install --no-cache-dir -r requirements.txt EXPOSE 5000 # command to run the app -CMD [ "python3", "app.py" ] \ No newline at end of file +CMD [ "python3", "app.py" ] diff --git a/app.py b/app.py index 03a1473..413697a 100644 --- a/app.py +++ b/app.py @@ -55,7 +55,10 @@ def download_file(filename): return response def get_ip(): - return socket.gethostbyname(socket.gethostname()) + try: + return socket.gethostbyname("host.docker.internal") # Host IP For macOS and Windows + except: + return socket.gethostbyname(socket.gethostname()) # Host IP For Linux def generate_qr_code(url): qr = qrcode.QRCode( diff --git a/docker-compose.yml b/docker-compose.yml index 501934b..e5cbe3a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,22 @@ version: '3.9' services: - web: + + web_windows: # service for Windows/Mac + build: . + volumes: + - ./uploads:/localfiletransfer/uploads + - ./downloads:/localfiletransfer/downloads + ports: + - "5000:5000" # Required for macOS/Windows to expose the container port + profiles: + - "windows_mac" # Profile name for macOS/Windows + + web_linux: # service for Linux build: . - network_mode: "host" volumes: - ./uploads:/localfiletransfer/uploads - ./downloads:/localfiletransfer/downloads + network_mode: "host" # Linux host network mode + profiles: + - "linux" # Profile name for Linux