implement cors + add Dockerfile for frontend + compose

This commit is contained in:
Michi 2025-04-22 14:49:44 +02:00
parent 4af8161a11
commit b59a74645f
4 changed files with 74 additions and 4 deletions

44
docker-compose.yml Normal file
View file

@ -0,0 +1,44 @@
services:
db:
image: postgres:17.4
restart: unless-stopped
volumes:
- ./db:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
- POSTGRES_USER=bbzw-horizon
- POSTGRES_DB=bbzw-horizon
- POSTGRES_PASSWORD=<PW>
webservice-inp21b:
build:
dockerfile: Dockerfile
context: /app/webservice-inp21b
restart: unless-stopped
ports:
- 8080:8080
environment:
- DB_CONNECTION_STRING=postgresql://bbzw-horizon:<PW>@db/bbzw-horizon
frontend:
build:
dockerfile: Dockerfile
context: /app/frontend
restart: unless-stopped
ports:
- 5173:5173
grafana-inp21b:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_DATABASE_TYPE=sqlite3
- GF_DATABASE_SQLITE3_PATH=/var/lib/grafana/grafana.db
volumes:
- ./grafana-inp21b:/var/lib/grafana
restart: unless-stopped
user: 0:0

12
frontend/Dockerfile Normal file
View file

@ -0,0 +1,12 @@
FROM node:22-alpine
RUN mkdir app
WORKDIR /app/
COPY git/ .
RUN npm install
EXPOSE 8080
CMD [ "npm", "run", "dev", "--", "--host", "0.0.0.0" ]

View file

@ -23,8 +23,8 @@ COPY webservice.py .
COPY crypto.py . COPY crypto.py .
COPY dbfunctions.py . COPY dbfunctions.py .
COPY models.py . COPY models.py .
COPY certs/key.pem . COPY certs/server.key .
COPY certs/cert.pem . COPY certs/server.crt .
# Start app # Start app
CMD ["uvicorn", "webservice:app", "--host", "0.0.0.0", "--port", "8443", "--ssl-keyfile=key.pem", "--ssl-certfile=cert.pem"] CMD ["uvicorn", "webservice:app", "--host", "0.0.0.0", "--port", "8443", "--ssl-keyfile=server.key", "--ssl-certfile=server.crt"]

View file

@ -3,6 +3,7 @@
################ IMPORTS ################ ################ IMPORTS ################
from fastapi import FastAPI, Depends, HTTPException, Header, Body, Query from fastapi import FastAPI, Depends, HTTPException, Header, Body, Query
from fastapi.middleware.cors import CORSMiddleware
from sqlmodel import Session from sqlmodel import Session
from dbfunctions import List, Optional, get_db, save_sensor_data, get_client_id_by_name, validate_token_with_access, engine, save_token_to_db, get_recent_sensor_data, get_all_clients from dbfunctions import List, Optional, get_db, save_sensor_data, get_client_id_by_name, validate_token_with_access, engine, save_token_to_db, get_recent_sensor_data, get_all_clients
from models import SensorDataIn, SensorData, MessageOnly, User, Client, ClientCreate, TokenResponse, Session as SessionModel from models import SensorDataIn, SensorData, MessageOnly, User, Client, ClientCreate, TokenResponse, Session as SessionModel
@ -14,7 +15,20 @@ app = FastAPI(
title="BBZW-Horizon", title="BBZW-Horizon",
description="BBZW-Horizon ist ein Tool, welches entwickelt wurde, um durch die Erfassung und Auswertung von Luftqualitätsmesswerten die Luftqualität in den Schulzimmern des BBZW Sursee zu verbessern. Bei dieser API handelt es sich um die Kommunikationsschnittstelle, zwischen den Arduinos, welche mit Sensoren die Daten erfassen und an die API senden. Diese API speichert die Daten dann in der Datenbank, damit diese durch das Frontend abgerufen und visualisiert werden können.", description="BBZW-Horizon ist ein Tool, welches entwickelt wurde, um durch die Erfassung und Auswertung von Luftqualitätsmesswerten die Luftqualität in den Schulzimmern des BBZW Sursee zu verbessern. Bei dieser API handelt es sich um die Kommunikationsschnittstelle, zwischen den Arduinos, welche mit Sensoren die Daten erfassen und an die API senden. Diese API speichert die Daten dann in der Datenbank, damit diese durch das Frontend abgerufen und visualisiert werden können.",
summary="Die BBZW-Horizon API dient als Kommunikationsschnittstelle, um Luftqualitätsmesswerte von Arduinos, die mit Sensoren ausgestattet sind, zu erfassen", summary="Die BBZW-Horizon API dient als Kommunikationsschnittstelle, um Luftqualitätsmesswerte von Arduinos, die mit Sensoren ausgestattet sind, zu erfassen",
version="0.0.5" version="0.0.6"
)
# CORS
origins = [
"*",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
) )
# DB Session # DB Session