diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c88ee6b --- /dev/null +++ b/docker-compose.yml @@ -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= + + + webservice-inp21b: + build: + dockerfile: Dockerfile + context: /app/webservice-inp21b + restart: unless-stopped + ports: + - 8080:8080 + environment: + - DB_CONNECTION_STRING=postgresql://bbzw-horizon:@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 + diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..463a603 --- /dev/null +++ b/frontend/Dockerfile @@ -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" ] \ No newline at end of file diff --git a/webservice/Dockerfile.txt b/webservice/Dockerfile.txt index ae089ce..13b5cb8 100644 --- a/webservice/Dockerfile.txt +++ b/webservice/Dockerfile.txt @@ -23,8 +23,8 @@ COPY webservice.py . COPY crypto.py . COPY dbfunctions.py . COPY models.py . -COPY certs/key.pem . -COPY certs/cert.pem . +COPY certs/server.key . +COPY certs/server.crt . # Start app -CMD ["uvicorn", "webservice:app", "--host", "0.0.0.0", "--port", "8443", "--ssl-keyfile=key.pem", "--ssl-certfile=cert.pem"] \ No newline at end of file +CMD ["uvicorn", "webservice:app", "--host", "0.0.0.0", "--port", "8443", "--ssl-keyfile=server.key", "--ssl-certfile=server.crt"] \ No newline at end of file diff --git a/webservice/webservice.py b/webservice/webservice.py index 2e26564..ab489f7 100644 --- a/webservice/webservice.py +++ b/webservice/webservice.py @@ -3,6 +3,7 @@ ################ IMPORTS ################ from fastapi import FastAPI, Depends, HTTPException, Header, Body, Query +from fastapi.middleware.cors import CORSMiddleware 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 models import SensorDataIn, SensorData, MessageOnly, User, Client, ClientCreate, TokenResponse, Session as SessionModel @@ -14,7 +15,20 @@ app = FastAPI( 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.", 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