2017-03-21 5 views
0

私は、いくつかのコンテナがあり、そこにはapiゲートウェイがあり、もう一つにangularjsアプリケーションがあるドッカー作成ファイルがあります。このスタック)。 apiゲートウェイは、composeファイルにあるいくつかのコンテナの正しいapiを呼び出すことに関係しています。しかし、私はWebサイト(角容器)からAPIゲートウェイを呼び出す必要があります。 私は角容器(またはとにかくブラウザ)から呼び出すためにAPIゲートウェイのアドレスを取得するためのベストプラクティスを知りたいと思います。 )。私は地元で働いて、私は localhostを指定する瞬間のために :それが動作しませ別のホストから接続しようとした場合、明らかにPortOfApiGateway/APIを/ ...dockerの角コンテナから呼び出すためにapiゲートウェイアドレスを取得する方法

をし、すべてが正常に動作しますが、...

なにか提案を?

答えて

0

ドッカー作成ファイルでは、コンテナを既定のネットワークにすることができる既存のネットワークに参加させることができます。ですから、あなたのコンテナがあなたのanglejsコンテナがすでに存在するネットワークに参加することを確認するだけです。次に、docker-composeファイルに指定した名前でAPIコンテナを参照することができます(apiという名前の場合、たとえばping apiが機能します)。 Networking in Composeを参照してください。

+0

はい、これは当てはまりますが、ブラウザからapiゲートウェイを呼び出す必要がある場合はありません。 私はapiゲートウェイのapiを呼び出す必要がある角度のサービスを持っていると思います。ドッカーのエイリアスネットワークを使用すると、egxを呼び出さなければなりません。 http:// api-gateway:8080/api/myapi しかし、ブラウザはそれを行うことはできません...このように、私は、サーバー側からのみ可能だと思います。 – user2972221

+1

その場合、APIコンテナにはホストからコンテナにポートをマップする 'ports'セクションが必要です。あなたが望むものに応じて - これはまだ私には分かりませんが、Nginxのようなリバースプロキシを設定する必要があります。もちろん、サーバーのファイアウォールでポートを開く必要があります。 – Zoyd

+0

はい..私はソリューションがリバースプロキシを使用していると思います! – user2972221

3

環境によっては、いくつかの解決策が考えられます。 environment.tsとenvironment.prod.ts

ファイルの内容を指定できます

1.あなたが例えば角度

のconfigファイルを持つことができ、角度CLIは2つのファイルを提供しています。

export const environment = { 
    production: false, 
    apiBaseUrl: 'http://localhost:3000' 
}; 

と生産の等価は、これはAによって提供される実際のDNSのURL

することができCLIを使用しなくても同じことができます。ここでのアイデアは、コンパイル時にファイルが選択されるということです。コンで

import { Location } from '@angular/common'; 
// Get the hostname 
this.hostname = location.host; 
if (this.hostname.indexOf(':') > 0) { 
this.hostname = this.hostname.substr(0, this.hostname.indexOf(':')); 
} 
// Add a port or a subdomain to get the API url: 
this.apiUrl = 'http://' + this.hostname + ':8080'; 

変数:

2は必ず同じサーバー

あなたはホスト名があなたからあなたの角度アプリを得たものと同じになると仮定することができますを使用できますか?

あなたが以前のコメントで言ったように、呼び出しはブラウザから行われるため、Docker外で行われます。この情報を作成ファイルに入れる簡単な方法はありません。それは私が調べることに興味があると言いました。

私はそれが役に立ちそうです。

関連する問題