From 038cb3391025f773e1b1c0e627c931955d680fef Mon Sep 17 00:00:00 2001 From: bronku Date: Tue, 11 Nov 2025 13:50:58 +0100 Subject: [PATCH] nginx start --- RAPORT.md | 29 +++++++++++++++++++++++++++++ docker-compose.yml | 15 ++++++++++++--- dotnet/Program.cs | 4 +++- nginx/html/index.html | 1 + nginx/nginx.conf | 28 ++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 nginx/html/index.html create mode 100644 nginx/nginx.conf diff --git a/RAPORT.md b/RAPORT.md index ebddab5..971d96e 100644 --- a/RAPORT.md +++ b/RAPORT.md @@ -46,6 +46,35 @@ Docker compose jest narzędziem do definiowania i uruchamianiania wilokontenerow ### Dodanie kontera +Utworzenie instancji dotnet przy użyciu dockera jest bardzo proste, wystarczy użyć poniższą komendę + +```sh +docker run -v ./nginx/html:/usr/share/nginx/html:ro -p 80:80 nginx +``` + +Polecenie `docker run` uruchamia dany kontener, w tym przypadku `docker run nginx` uruchamia konter o nazwie nginx. Ponieważ na maszynie lokalnej nie ma kontenera o takiej nazwie, docker szuka tego kontenera w repozytorium hub.docker.com + +Jednak sam kontener z serwerem niewiele nam daje, potrzebujemy jeszcze powiedzieć mu co ma serwować, i gdzie ma to serwować. W tym celu potrzemujemy kolejne dwie opcje do komendy + +- `-v ./nginx/html:/usr/share/nginx/html:ro` tworzy link między lokalnym folderem, a folderem w kontenerze + - `-v` mówi dockerowi że chcemy zamontować jakiś folder/volume + - `./nginx/html` to lokalizacja na systemie hosta + - `/usr/share/nginx/html` to lokalizacja na systemie kontenera + - `ro` mówi dockerowi że folder jest w trybie tylko do odczytu +- `-p 80:80` piekierowuje port z kontenera do hosta + - pierwsza wartość to numer portu hosta + - druga wartość to numer portu kontenera + +Podobnie wygląda konfiguracja kontenera w docker docker compsose + +- `image` to nazwa kontenera który chcemy uruchomić +- `volumes` to odpowiednik `-v` +- `ports` to odpowiednik `-p` + +#### dokumentacja kontenera + +- [[https://hub.docker.com/_/nginx]] + ### Konfiguracja reverse proxy --- diff --git a/docker-compose.yml b/docker-compose.yml index b717ba5..30c7063 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,16 @@ services: - dotnet: + dotnet-1: build: ./dotnet environment: - - PORT=5000 + - NAME=Fili + dotnet-2: + build: ./dotnet + environment: + - NAME=Kili + nginx: + image: nginx + volumes: + - ./nginx/html:/usr/share/nginx/html:ro + - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro ports: - - "5000:5000" + - "80:80" diff --git a/dotnet/Program.cs b/dotnet/Program.cs index cdce58e..1b365f9 100644 --- a/dotnet/Program.cs +++ b/dotnet/Program.cs @@ -1,7 +1,8 @@ var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); -var port = Environment.GetEnvironmentVariable("PORT") ?? "5000"; +var port = Environment.GetEnvironmentVariable("PORT") ?? "80"; +var name = Environment.GetEnvironmentVariable("NAME") ?? "unnamed"; var url = $"http://0.0.0.0:{port}"; app.MapGet("/{**ok}", async (HttpContext context) => @@ -17,6 +18,7 @@ app.MapGet("/{**ok}", async (HttpContext context) => var headers = request.Headers; var responseText = new System.Text.StringBuilder(); + responseText.AppendLine($"Server Name: {name}"); responseText.AppendLine($"IP Address: {ip}"); responseText.AppendLine($"Method: {method}"); responseText.AppendLine($"Scheme: {scheme}"); diff --git a/nginx/html/index.html b/nginx/html/index.html new file mode 100644 index 0000000..ae88ac5 --- /dev/null +++ b/nginx/html/index.html @@ -0,0 +1 @@ +hello from nginx! diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..f7d0eb8 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,28 @@ +events { } + +http { + upstream dotnet_app { + server dotnet-1; + server dotnet-2; + } + + server { + listen 80; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ =404; + } + + location /dotnet/ { + proxy_pass http://dotnet_app; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + } +}