2017-09-06 7 views
0

私は独自のDockerfileを持つReactJSプロジェクトを持っています。ポート3000:3000を公開しています。ReactJSブラウザアプリケーションはDocker Composeネットワーク内のものを見ることができません

また、ポート80:80を公開する独自のDockerfileを持つPHPプロジェクトもあります。 PHPアプリケーションには、MySQL、Redis、Nginx用のコンテナもあります。

PHPアプリケーションの場合、PHP、Nginx、MySQL、Redisが通信するためのネットワーク(my-net)を作成するドッカー作成ファイルがあります。しかし、ReactJS(これは別のプロジェクトにあります)がPHPアプリケーションと通信できるようになりました。

Reactプロジェクトにドッカー作成ファイルを追加し、PHPプロジェクトmy-netからネットワークに追加し、それを作成しようとしないようにexternalと宣言しました。

これはうまくいくようです:ReactJSコンテナから、app(バックエンドサービスの名前)にpingして正常に動作します。しかし、ReactJSコードから、axiosのようなものを使用してバックエンドAPIを試しても、appまたはhttp://appまたはそれ以外のバリエーションを解決することはできません。しかし、それをaxiosに置き換えると、基になるIPアドレスにアクセスすることができます。

ホスト名解決に問題があるようですが、これはおそらくaxios/JavaScriptの終了です。私が行方不明の何かがあるか、これがうまくいかない理由がありますか?

答えて

2

JavaScriptがブラウザ(Docker外)で実行されている場合、appはDockerネットワーク内でのみ使用できます(組み込みDNSサーバー経由で)。

外部からPHPサーバにアクセスするには、代わりにlocalhostと公開されているポート(80)を使用します。

+0

わかりません。私は内部的にPHPアプリケーションにアクセスしているブラウザからReactアプリケーションにアクセスしようとしています。しかし、私がそうすると、ReactはPHPアプリケーションに接続できないようです – djt

+0

リクエストはreactjs/browserや反応容器の中の何かから来ていますか?私は、反応容器が静的なファイルサーバーだと思った。 – Julian

+0

ReactJS(javascript)はPHPアプリケーションにリクエストしています。つまり、私のブラウザではReactJSの公開ポートであるlocalhost:3000にアクセスします。そのエンドポイントにヒットすると、ReactはPHPコンテナにリクエストを出します。これは失敗する部分です。 ReactJSコンテナからPHPアプリケーションをpingすることはできますが、アキシャルを使用してJavascriptコードからリクエストを作成しようとすると、ホストを解決できません。 – djt

関連する問題