私は、Nginxを通じてUWSGI Flask Apiと通信するAngular Appを開発しました。現在、私は3つのコンテナを持っています。(Angular [web_admin]、Api [api_admin]、Nginx [nginx]Docker-Compose - 「内部」APIとの通信。
開発マシンで実行しているとき、通信は正常に動作しています。角度のあるリクエストは、URL:http://localhost:5000とapiのレスポンスがうまくいっていて、すべてうまくいきます。
しかし、プロダクションサーバーにデプロイすると、ポート5000がファイアウォールで開かれていないため、アプリケーションが動作していないことがわかりました。
私の質問は親切で簡単ですが、外側から呼び出すのではなく、内部ネットワーク経由でAPIコンテナを呼び出すには、どうやって角コンテナを作成しますか?
version: '2'
services:
data:
build: data
neo4j:
image: neo4j:3.0
networks:
- back
volumes_from:
- data
ports:
- "7474:7474"
- "7473:7473"
- "7687:7687"
volumes:
- /var/diariooficial/neo4j/data:/data
web_admin:
build: frontend/web
networks:
- front
- back
ports:
- "8001:8001"
depends_on:
- api_admin
links:
- "api_admin:api_admin"
volumes:
- /var/diariooficial/upload/diario_oficial/:/var/diariooficial/upload/diario_oficial/
api_admin:
build: backend/api
volumes_from:
- data
networks:
- back
ports:
- "5000:5000"
depends_on:
- neo4j
- neo4jtest
volumes:
- /var/diariooficial/upload/diario_oficial/:/var/diariooficial/upload/diario_oficial/
nginx:
build: nginx
volumes_from:
- data
networks:
- back
- front
ports:
- "80:80"
- "443:443"
volumes:
- /var/diariooficial/log/nginx:/var/log/nginx
depends_on:
- api_admin
- web_admin
networks:
front:
back:
お返事ありがとうございました。私はNginxでDNS名を使用していますが正常に動作しますが、角度がDNS名を変換しない理由はわかりません。 $ http.get(__env.apiUrl + '/ websites') オプションhttp:// api_admin:5000/auth/login net :: ERR_NAME_NOT_RESOLVED –
これはブラウザのJavaScriptコードからアクセスしていますか?その場合、要求はDockerネットワークの外部から取得されます。実行時に '__env.apiUrl'を設定する方法を提供する必要があります。あなたの質問はhttp://stackoverflow.com/a/42938882/684908に似ているようですね。この場合のあなたのURLは、DockerホストのIPアドレスになります(例えば、Docker Machineを搭載した私のラップトップでは、私のDockerホストは192.168.99.100です)。 –