From a8720119d66d6e65d34854cda06f824f78365f92 Mon Sep 17 00:00:00 2001 From: Noman Akram Date: Tue, 2 Dec 2025 19:54:40 +0500 Subject: [PATCH] Add Dockerfile(backend & frontend) & docker-compose.yml for project --- backend/.dockerignore | 9 +++++++++ backend/Dockerfile | 20 ++++++++++++++++++++ backend/application.py | 11 +++++++++++ docker-compose.yml | 29 +++++++++++++++++++++++++++++ frontend/.dockerignore | 3 +++ frontend/Dockerfile | 13 +++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 backend/.dockerignore create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml create mode 100644 frontend/.dockerignore create mode 100644 frontend/Dockerfile diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..bd95cf6 --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,9 @@ +__pycache__/ +*.pyc +*.pyo +*.pyd +data.db +migrations/ +.env +.flaskenv +.git diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..8aec054 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3.11-slim + +ENV PYTHONUNBUFFERED=1 + +WORKDIR /app + +# RUN apt-get update && apt-get install -y \ +# gcc \ +# libpq-dev \ +# && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . + +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 5000 + +CMD ["python", "application.py"] \ No newline at end of file diff --git a/backend/application.py b/backend/application.py index 999b4d7..ce52467 100644 --- a/backend/application.py +++ b/backend/application.py @@ -1,3 +1,14 @@ from flaskr import create_app app = create_app() + +# for rule in app.url_map.iter_rules(): +# print(rule) + +@app.route("/") +def index(): + return {"message": "Welcome to Todo App API"} + +if __name__ == "__main__": + # 0.0.0.0 makes Flask accessible outside the container + app.run(host="0.0.0.0", port=5000, debug=True) \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c8c779d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.9" + +services: + backend: + build: + context: ./backend + container_name: flask-backend + ports: + - "5000:5000" + volumes: + - ./backend:/app + environment: + FLASK_ENV: development + JWT_SECRET_KEY: super-secret + SECRET_KEY: super-secret + restart: always + + frontend: + build: + context: ./frontend + container_name: react-frontend + ports: + - "5173:5173" + volumes: + - ./frontend:/app + - /app/node_modules + depends_on: + - backend + restart: always diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..a21f178 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,3 @@ +node_modules +dist +.git diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..1303958 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,13 @@ +FROM node:20 + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +EXPOSE 5173 + +CMD [ "npm", "run", "dev", "--", "--host" ] \ No newline at end of file