/ /単一のdocker-composeおよびnginxリバースプロキシで異なるポートを持つ2つのアプリ-docker、nginx、docker-compose

単一のdocker-composeとnginxリバースプロキシに異なるポートを持つ2つのアプリ-docker、nginx、docker-compose

アプリでアプリを実行しています。ローカルホストの開発ドメイン。ただし、別のポートで追加のアプリを実行したいと思います。ポート80の代わりに、app2 /にドメインapp.dev:2000がある2000になります。docker-composeとnginxにどのような変更を加える必要があるかわかりますか?ありがとう

これは私の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"

これは私の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;
}
}
}

回答:

回答№1は0

nginxはポート80のみをリッスンするため、app2のポートを次のように変更するだけで十分だと思います。

app2:
build: ./app2
ports:
- "2000:2000"
links:
- mongo
- redis
command: node app.js

回答№2の場合は0

最も簡単な方法は、ポート2000でapp2を公開することです。

  app2:
build: ./app2
ports:
- "2000:2000"

もう1つは、最初のアプリとの一貫性を保つために、nginxを介して接続をルーティングすることです。

構成する

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

ちなみに、あなたはどれも必要ありません links バージョン2+の作成ファイル。すでにサービス名を介してすべてのサービスにアクセスできます。