From 96b43566e1172a07a50e83090a6a38d312831394 Mon Sep 17 00:00:00 2001 From: Robin1999Stark Date: Fri, 30 Aug 2024 00:23:41 +0200 Subject: [PATCH] deploy --- Backend/backend/Pipfile | 1 + Backend/backend/Pipfile.lock | 18 ++++++++- Frontend/frontend/Dockerfile | 25 +++++++++++- Frontend/frontend/nginx.conf | 39 ++++++++++++++++++ Frontend/frontend/src/App.tsx | 40 +++++++++---------- .../frontend/src/Endpoints/UserService.ts | 8 ---- docker-compose.yml | 3 +- 7 files changed, 100 insertions(+), 34 deletions(-) create mode 100644 Frontend/frontend/nginx.conf diff --git a/Backend/backend/Pipfile b/Backend/backend/Pipfile index 85e230e0..938ea27f 100644 --- a/Backend/backend/Pipfile +++ b/Backend/backend/Pipfile @@ -15,6 +15,7 @@ dj-rest-auth = "*" django-allauth = "*" requests = "*" djangorestframework-simplejwt = "*" +gunicorn = "*" [dev-packages] diff --git a/Backend/backend/Pipfile.lock b/Backend/backend/Pipfile.lock index 20d71934..b4e4a29f 100644 --- a/Backend/backend/Pipfile.lock +++ b/Backend/backend/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "19e2523f51e19c702323619b21d0a5d182aba8c015bc08732414e8d7b5aac2b5" + "sha256": "153133c26070ebb98ce66e2c4ffa184d5f06a7281cca35250e2c260f7d61f117" }, "pipfile-spec": 6, "requires": { @@ -182,6 +182,14 @@ "index": "pypi", "version": "==5.3.1" }, + "gunicorn": { + "hashes": [ + "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", + "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec" + ], + "index": "pypi", + "version": "==23.0.0" + }, "idna": { "hashes": [ "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", @@ -190,6 +198,14 @@ "markers": "python_version >= '3.6'", "version": "==3.8" }, + "packaging": { + "hashes": [ + "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", + "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + ], + "markers": "python_version >= '3.8'", + "version": "==24.1" + }, "pillow": { "hashes": [ "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", diff --git a/Frontend/frontend/Dockerfile b/Frontend/frontend/Dockerfile index 98fb5291..31fc5ec1 100644 --- a/Frontend/frontend/Dockerfile +++ b/Frontend/frontend/Dockerfile @@ -1,10 +1,31 @@ -FROM node +# Step 1: Build the application +FROM node:18 AS build WORKDIR /app +# Kopiere nur package.json und package-lock.json für den npm install-Befehl COPY package.json . COPY package-lock.json . RUN npm install -COPY . . \ No newline at end of file +# Kopiere den Rest des Codes nach dem Installieren der Dependencies +COPY . . + +# Baue die Anwendung +RUN npm run build + +# Step 2: Serve the application +FROM nginx:alpine + + +COPY nginx.conf /etc/nginx/nginx.conf + +# Kopiere die gebauten Dateien in das Nginx-Verzeichnis +COPY --from=build /app/dist /usr/share/nginx/html + +# Nginx auf Port 8080 aussetzen +EXPOSE 8080 + +# Nginx im Vordergrund ausführen +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/Frontend/frontend/nginx.conf b/Frontend/frontend/nginx.conf new file mode 100644 index 00000000..aa26c550 --- /dev/null +++ b/Frontend/frontend/nginx.conf @@ -0,0 +1,39 @@ +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + gzip on; + + server { + listen 8080; + server_name mac-server; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } + + # Optionale Fehlerseiten + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + internal; + } + } +} \ No newline at end of file diff --git a/Frontend/frontend/src/App.tsx b/Frontend/frontend/src/App.tsx index 67063dc0..c2fe3a0d 100644 --- a/Frontend/frontend/src/App.tsx +++ b/Frontend/frontend/src/App.tsx @@ -36,7 +36,7 @@ function App() { }); const [loggedIn, setLoggedIn] = useState(false); - const [user, setUser] = useState(null); + const [, setUser] = useState(null); const [loading, setLoading] = useState(true); const handleResize = () => { @@ -108,26 +108,24 @@ function App() { )} {/* Protected Routes */} - {loggedIn && ( - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - )} + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + {/* Redirect to login if trying to access protected routes while not logged in */} } /> diff --git a/Frontend/frontend/src/Endpoints/UserService.ts b/Frontend/frontend/src/Endpoints/UserService.ts index 5ec6da11..c9b5a3fb 100644 --- a/Frontend/frontend/src/Endpoints/UserService.ts +++ b/Frontend/frontend/src/Endpoints/UserService.ts @@ -2,16 +2,8 @@ import axios, { AxiosResponse } from 'axios'; import { User } from '../Datatypes/User'; import { BASE_URL } from './Settings'; - -const instance = axios.create({ - baseURL: BASE_URL, - withCredentials: true, -}) - - export namespace UserService { - export async function getUserByUserName(name: string, pw: string): Promise { let userData = null; diff --git a/docker-compose.yml b/docker-compose.yml index d97aac93..25ddb60a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ services: backend: build: context: ./Backend/backend - command: python manage.py runserver 0.0.0.0:8000 + command: gunicorn backend.wsgi:application --bind 0.0.0.0:8000 volumes: - .:/code - ./data/media:/code/media @@ -29,7 +29,6 @@ services: frontend: build: context: ./Frontend/frontend - command: npm run dev -- --port 8080 ports: - "8080:8080" depends_on: