Mam aplikację z aplikacją.dev na moim komputerze lokalnym. Chciałbym jednak mieć dodatkową aplikację działającą z innym portem. Zamiast portu 80 będzie to 2000 z domeną app.dev:2000 w app2 / czy mogę wiedzieć, jakie zmiany powinienem wprowadzić w moim docker-compose i nginx? Dzięki
To jest mój plik docker-compose
version: "2"
volumes:
mongostorage:
services:
app:
build: ./app
ports:
- "3000"
links:
- mongo
- redis
command: node ./bin/www
app2:
build: ./app2
ports:
- "2000"
links:
- mongo
- redis
command: node app.js
nginx:
build: ./nginx
ports:
- "80:80"
links:
- app:app
mongo:
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
volumes:
- mongostorage:/data/db
ports:
- "27017:27017"
redis:
image: redis
volumes:
- ./data/redis/db:/data/db
ports:
- "6379:6379"
To jest mój plik ngnix.conf
events {
worker_connections 1024;
}
http{
upstream app.dev{
least_conn;
server app:3000 weight=10 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name app.dev;
location / {
proxy_pass http://app.dev;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
Odpowiedzi:
0 dla odpowiedzi № 1Myślę, że zmiana portów app2 w następujący sposób powinna wystarczyć, ponieważ nginx nasłuchuje tylko na porcie 80.
app2:
build: ./app2
ports:
- "2000:2000"
links:
- mongo
- redis
command: node app.js
0 dla odpowiedzi nr 2
Najprostszym sposobem jest udostępnienie app2 na porcie 2000
app2:
build: ./app2
ports:
- "2000:2000"
Drugim jest kierowanie połączenia przez nginx, aby było zgodne z pierwszą aplikacją.
Komponować
nginx:
build: ./nginx
ports:
- "80:80"
- "2000:2000"
Nginx
http{
upstream app.dev{
least_conn;
server app:3000 weight=10 max_fails=3 fail_timeout=30s;
}
upstream app2.dev{
least_conn;
server app2:2000 weight=10 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name app.dev;
location / {
proxy_pass http://app.dev;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 2000;
server_name app.dev;
location / {
proxy_pass http://app2.dev/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
Nawiasem mówiąc, nie potrzebujesz żadnego z plików links
w pliku redagowania w wersji 2+. Masz już dostęp do wszystkich usług za pośrednictwem nazwy usługi.