commit 83838a4ca49351984338b84f376b0bcab5c4f5cc Author: hasslesstech Date: Wed May 7 20:19:03 2025 +0300 [backend] add basic files for deploying and extending backend operations diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e5c14a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/*.env diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..d976ba5 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,20 @@ +FROM alpine:latest AS build + +RUN apk add python3 +RUN mkdir /venv /app +RUN python3 -m venv /venv +ENV PATH="/venv/bin:$PATH" + +RUN apk add build-base linux-headers musl-dev python3-dev libpq-dev +RUN pip3 install flask uwsgi psycopg2 + + + +#FROM alpine:latest AS prod + +#RUN apk add python3 +#ENV PATH="/venv/bin:$PATH" +#COPY --from=build /venv /venv +EXPOSE 9090/tcp + +ENTRYPOINT ["uwsgi", "--http", ":9090", "--callable", "app", "--wsgi-file", "/app/main.py"] diff --git a/backend/docker-compose.yaml b/backend/docker-compose.yaml new file mode 100644 index 0000000..33060e4 --- /dev/null +++ b/backend/docker-compose.yaml @@ -0,0 +1,8 @@ +services: + backend: + build: . + ports: + - "80:9090" + volumes: + - "./src/:/app:ro" + env_file: backend.env diff --git a/backend/src/main.py b/backend/src/main.py new file mode 100644 index 0000000..b6da923 --- /dev/null +++ b/backend/src/main.py @@ -0,0 +1,28 @@ +from flask import Flask +import psycopg2 as psql +from os import environ as env + +app = Flask(__name__) + +db_params = { + 'database': env.get('DB_NAME'), + 'user': env.get('DB_USER'), + 'password': env.get('DB_PASS'), + 'host': env.get('DB_HOST'), + 'port': int(env.get('DB_PORT')) +} + +db = psql.connect(**db_params) + +@app.route("/") +def test(): + c = db.cursor() + try: + c.execute('SELECT * FROM movies') + except Exception: + db.rollback() + return "Failed to fetch table 'movies'" + + res = c.fetchmany(10) + c.close() + return "

Hello, World! test data:
" + "
".join(str(i) for i in res) + "

"