現在、私はドッカーコンテナで使用する既存のプロジェクトをリメイクするプロジェクトに取り組んでいます。 私は3個の異なるコンテナを有する:Docker(compose)とsocket io - コンテナをリンクする方法
- ポート3001にsocket.io接続を開き、ウェブページを提供していnodejsサーバ(また、そのsocket.ioサーバに接続すること)ポート3000
- にMySQLデータベースをそれはnodejsバックエンド
- サーバーにsocket.ioを介してデータを送信する小さなアプリケーションのために必要とされる今
私はちょうど右のドッキングウィンドウのネットワークを理解している場合、私はこれらのコンテナをリンクしようとしていますが、私はわかりません。
- ポート:ホストコンピュータに(?および他のすべての/すべてのリンクされたコンテナに)ポートを公開
- リンク:私は、右のドッキングウィンドウ-compose.ymlファイルであることを想定した中で午前のスタート順を設定し、
は、だから私は常にリンクし、公開しているすべてのリンクされた容器のみ(ないホストではなく、リンクされていないコンテナ)にポートを公開しますと
だから、このようなものは(バージョン3フォーマット)右のようになります。
nodeserver:
ports:
-3000:3000
expose:
-3001
links:
-database
...
database:
(image mysql...)
application:
links:
-nodeserver
...
は、アプリケーションとWebページは現在nodeserverとしてsocket.ioサーバに達することができるの両方:3000を?
私はこれをすでに試してみましたが、完全に機能していないので、まずすべてを理解したかったのです。 ご協力いただきありがとうございます!
ありがとうございました! Webページが実際のホスト上で動作するので、ここではエクスポーズではなくポートが必要です。それがコンテナ内で実行されていた場合は、公開されているだけでした! 一般に、「リンク」はポートと一緒にしか使用できないか、公開することはできますか? – CodeO
@CodeO 'links'を使う方法に制限はなく、' links'はターゲットサービスのエイリアスをコンテナに追加するだけです。あなたは 'docker-compose exec nodeserver cat/etc/hosts'コマンドで' hosts'ファイルを見ることができます。私は 'ports'と' expose'の投稿を更新しました。 – Shawyeok
ありがとう、私はこの答えを受け入れました(私はdocu myselft;を読んでいますが))。あなたはいつでも依存関係を助けるかもしれない 'links'をいつでも使うことができますが、ポート/エクスポーズなしでは、他のコンテナから何かにアクセスすることはできません。 – CodeO