Încerc să dockerizez trei aplicații, două aplicații frontend folosind react și o aplicație backend nodejs, cele două aplicații frontend folosesc același backend cu porturi diferite.
Aplicațiile frontend (https://localhost/login) și backend (https://localhost:8443/api-portal și https://localhost:8443/api-adminportal) funcționează perfect.
Problema este când încerc să accesez cealaltă aplicație frontală (https://localhost:8443/adminportal/) primesc această eroare în jurnalul nginx:
172.19.0.1 - - [24/May/2022:13:25:42 +0000] „GET /sockjs-node HTTP/1.1” 404 555 „-” „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/ 537.36 (KHTML, ca Gecko) Chrome/101.0.4951.67 Safari/537.36" "-"
2022/05/24 13:25:42 [eroare] 31#31: *15 open() „/etc/nginx/html/sockjs-node” a eșuat (2: Nu există un astfel de fișier sau director), client: 172.19.0.1 , server: localhost, cerere: „GET /sockjs-node HTTP/1.1”, gazdă: „localhost:8443”
Și în browserul Firefox primesc această eroare:
Firefox nu poate stabili o conexiune la server la wss://localhost:8443/sockjs-node.
Fișierul Nginx conf.d:
Server {
asculta 80;
nume_server gazdă locală 127.0.0.1 0.0.0.0;
returnează 301 https://$server_name$request_uri;
}
Server {
asculta 443 ssl;
nume_server gazdă locală 127.0.0.1 0.0.0.0;
ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/key.pem;
Locație / {
proxy_pass http://fpr-frontend:3000/;
}
# include /etc/nginx/conf.d/koma/*.conf;
pagina_eroare 500 502 503 504 /50x.html;
locație = /50x.html {
root /usr/share/nginx/html;
}
}
Server {
asculta 8443 ssl;
nume_server gazdă locală 127.0.0.1 0.0.0.0;
ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/key.pem;
locație /adminportal/ {
proxy_pass http://fpr-adminportal:3001/adminportal/;
}
locație /api-adminportal/ {
proxy_pass https://fpr-backend:3335/;
}
locație /api-portal/ {
proxy_pass https://fpr-backend:3333/;
}
# include /etc/nginx/conf.d/koma/*.conf;
pagina_eroare 500 502 503 504 /50x.html;
locație = /50x.html {
root /usr/share/nginx/html;
}
}
fișier docker-compose.yml:
versiunea: "3.2"
volume:
mongodata:
Servicii:
fpr-backend:
construi:
context: .
dockerfile: Dockerfile.backend
imagine: fpr-backend
fișier_env: ./config/fpr-backend.env
mediu inconjurator:
FRONTEND_URL: https://localhost
FRONTEND_ADMIN_PORTAL_URL: https://localhost:8443/adminportal/
depinde de:
- mongo
expune:
- „3333”
- „3335”
porturi:
- „3333:3333/tcp”
- „3335:3335/tcp”
comandă: [„fir”, „start”]
fpr-frontend:
construi:
context: .
dockerfile: Dockerfile.frontend
argumente:
VITE_BACKEND_URL: https://localhost:8443/api-portal/
imagine: fpr-frontend
fișier_env: ./config/fpr-frontend.env
depinde de:
- fpr-backend
expune:
- "3000"
comandă: ["yarn", "serve", "--host=fpr-frontend", "--port=3000"]
fpr-adminportal:
stdin_open: true # docker run -i
tty: true # docker run -t
construi:
context: .
dockerfile: Dockerfile.adminportal
argumente:
PORT: 3001
REACT_APP_API_URL: https://localhost:8443/api-adminportal/
imagine: fpr-adminportal
fișier_env: ./config/fpr-adminportal.env
mediu inconjurator:
- PUBLIC_URL=https://localhost:8443/adminportal
depinde de:
- fpr-backend
expune:
- „3001”
porturi:
- „3001:3001/tcp”
comandă: ["yarn","dev"]
mongo:
imagine: mongo
fișier_env: ./config/mongo.env
volume:
- mongodata:/etc/mongo
nginx:
imagine: nginx
depinde de:
- fpr-backend
- fpr-frontend
- fpr-adminportal
volume:
- ./config/nginx/conf.d/:/etc/nginx/conf.d/
- ./modules/fpr-backend/certificates/UserPortal:/etc/nginx/cert
expune:
- „443”
- „8443”
porturi:
- „8000:80/tcp”
- „443:443/tcp”
- „8443:8443/tcp”