nginx start

This commit is contained in:
bronku 2025-11-11 13:50:58 +01:00
parent e95792c3ed
commit 038cb33910
5 changed files with 73 additions and 4 deletions

View file

@ -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
---

View file

@ -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"

View file

@ -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}");

1
nginx/html/index.html Normal file
View file

@ -0,0 +1 @@
hello from nginx!

28
nginx/nginx.conf Normal file
View file

@ -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;
}
}
}