Skip to content

MBaranekTech/Flask-Calculator-App-Dockerized

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 

Repository files navigation

๐Ÿณ Flask powered by Docker

๐Ÿ”„ Flask is a popular micro web framework written in Python.
๐Ÿ”„ Simplicity and Ease of Use: It has a gentle learning curve and is quick to get started with, even for beginners.
๐Ÿ”„ Great for APIs and Microservices
๐Ÿ”„ Flexibility & Lightweight

flask

๐Ÿงฎ Flask-Calculator-App-Dockerized

Perform +, โˆ’, ร—, รท operations
Flask web interface
Docker and Docker Compose setup

flask Structure

flask-calculator/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ routes.py
โ”‚   โ”œโ”€โ”€ templates/
โ”‚   โ”‚   โ””โ”€โ”€ calculator.html
โ”‚   โ””โ”€โ”€ static/
โ”‚       โ””โ”€โ”€ style.css
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ docker-compose.yml
โ””โ”€โ”€ run.py

app/init.py

from flask import Flask

def create_app():
    app = Flask(__name__)
    from app.routes import main
    app.register_blueprint(main)
    return app

app/routes.py

from flask import Blueprint, render_template, request

main = Blueprint('main', __name__)

@main.route("/", methods=["GET", "POST"])
def calculator():
    result = None
    error = None
    if request.method == "POST":
        try:
            num1 = float(request.form['num1'])
            num2 = float(request.form['num2'])
            operation = request.form['operation']

            if operation == 'add':
                result = num1 + num2
            elif operation == 'subtract':
                result = num1 - num2
            elif operation == 'multiply':
                result = num1 * num2
            elif operation == 'divide':
                if num2 != 0:
                    result = num1 / num2
                else:
                    error = "Division by zero."
        except ValueError:
            error = "Invalid input."

    return render_template("calculator.html", result=result, error=error)

app/templates/calculator.html

<!DOCTYPE html>
<html>
<head>
    <title>Calculator</title>
</head>
<body>
    <h1>Flask Calculator</h1>
    <form method="post">
        <input name="num1" placeholder="First number">
        <input name="num2" placeholder="Second number">
        <select name="operation">
            <option value="add">+</option>
            <option value="subtract">โˆ’</option>
            <option value="multiply">ร—</option>
            <option value="divide">รท</option>
        </select>
        <button type="submit">Calculate</button>
    </form>
    {% if result is not none %}
        <p>Result: {{ result }}</p>
    {% elif error %}
        <p style="color:red">{{ error }}</p>
    {% endif %}
</body>
</html>

run.py

from app import create_app

app = create_app()

if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0")

requirements.txt

Flask==3.0.0

Dockerfile

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "run.py"]

docker-compose.yml

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"

flask_2

docker-compose build
docker-compose up

Open http://localhost:5000

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors