最も簡単な方法--linkを使用することです。しかし、新しいバージョンのdockerはそれから離れており、実際にスイッチはすぐに削除されます。
以下のリンクは、2つのコンテナを接続する際に便利です。添付部分はスキップすることができます。これは、画像に項目を追加するのに便利な方法です。
https://deis.com/blog/2016/connecting-docker-containers-1/
興味がある部分は、二つの容器の間の通信です。最も簡単な方法は、Webサーバーコンテナから名前でDBコンテナを参照することです。
例:
あなたはデシベルコンテナDB1とウェブサーバコンテナWEB0という名前
。コンテナは両方ともブリッジネットワーク上にある必要があります。つまり、Webコンテナがその名前を参照してDBコンテナに接続できる必要があります。
アプリのWeb設定ファイルがある場合、DBホストの場合はDB1という名前を使用します。
古いバージョンのドッカーを使用している場合は、 - linkを使用する必要があります。
例:
手順1:その後、
あなたがウェブアプリを起動。使用:
ステップ2:docker run --name web0 --link db1 webapp/webapp:3.0
とウェブアプリはDBにリンクされます。しかし、私が言ったように--linkスイッチはすぐに削除されます。
代わりにドッカーを使用して、ネットワークを構築します。しかしながら;あなたのシステム用のdocker composeをダウンロードする必要があります。 https://docs.docker.com/compose/install/#prerequisites
と例のセットアップは、このようなものです:
ファイル名は、これは私が私のトップをオフに思い出すことができない、ネットワークに一般的な名前を命名します
version: "2" services: webserver: image: "moodlehq/moodle-php-apache:7.1 depends_on: - db volumes: - "/var/www/html:/var/www/html" - "/home/some_user/web/apache2_faildumps.conf:/etc/apache2/conf-enabled/apache2_faildumps.conf" environment: MOODLE_DOCKER_DBTYPE: pgsql MOODLE_DOCKER_DBNAME: moodle MOODLE_DOCKER_DBUSER: moodle MOODLE_DOCKER_DBPASS: "[email protected]" HTTP_PROXY: "${HTTP_PROXY}" HTTPS_PROXY: "${HTTPS_PROXY}" NO_PROXY: "${NO_PROXY}" db: image: postgres:9 environment: POSTGRES_USER: moodle POSTGRES_PASSWORD: "[email protected]" POSTGRES_DB: moodle HTTP_PROXY: "${HTTP_PROXY}" HTTPS_PROXY: "${HTTPS_PROXY}" NO_PROXY: "${NO_PROXY}"
base.ymlですあなたが--nameスイッチを使用しない限り、その名前が何であるかを頭に入れます。
IE docker-compose --name setup1 up base.yml
注:--nameスイッチを使用する場合は、あなたがドッキングウィンドウのコンを呼び出すときに、それを使用する必要がありますので、docker-compose --name setup1 down
これはあるので、あなたはWebサーバとDBのより、その後のインスタンスを持つことができ、この場合、docker composeはコマンドを実行するインスタンスを知っています。一度に複数のランを実行することもできます。同じサーバーでテストを並行して実行している場合は、CI/CDに最適です。
ドッカーもそう docker-compose --name setup1 exec webserver do_some_command
最良の部分は、あなたはユニットテストのためのdbのまたはそのような何かを変更したい場合は、アップコマンドに追加.ymlファイルを含めることができ、あるとドッキングウィンドウと同じコマンドを持って構成しますそれは類似の名前を持つ項目を上書きしますが、私はそれをキー=>値の置き換えと考えています。
例:
db.yml
version: "2" services: webserver: environment: MOODLE_DOCKER_DBTYPE: oci MOODLE_DOCKER_DBNAME: XE db: image: moodlehq/moodle-db-oracle
、これはデシベルを上書きしますdocker-compose --name setup1 up base.yml db.yml
を呼び出します。別の設定で。各コンテナからこれらのサービスに接続する必要がある場合は、サービスで設定された名前(この場合はwebserverとdb)を使用します。
私はあなたのケースで実際にはもっと便利な設定かもしれないと思います。必要なすべての変数をymlファイルに設定して、起動が必要なときにdocker composeのコマンドを実行するだけで済みます。だからそれをもっと始めるとセットアップを忘れる。
注:コンテナとコンテナ間の通信にポートを公開する必要はないので、--portコマンドは使用しませんでした。ホストがコンテナに接続するか、ホストの外部からアプリケーションに接続する場合にのみ必要です。ポートを公開すると、そのポートはホストが許可するすべての通信に開放されます。したがって、ポート80でWebを公開することは、物理ホスト上でWebサーバーを起動する場合と同じで、ホストが許可している場合は外部接続を許可します。また、何らかの理由で複数のWebアプリケーションを同時に実行したい場合は、ポート80を公開すると、そのポートで公開しようとすると追加のWebアプリケーションを実行できなくなります。したがって、CI/CDの場合、ポートを一切公開しないことが最善です。また、ドッカーが--nameスイッチを使用して作成すると、すべてのコンテナが自分のネットワーク上にあり、衝突することはありません。だから、あなたはかなりたくさんの容器を持っています。
ウェブコンテナとdbコンテナの両方がホストマシン上にありますか?もしそうなら、使用しているドッカーのバージョンは?古いバージョンのdockerには1つの方法がありましたが、新しいバージョンには異なる方法がありました。ドッカーの作成も可能ですか?それは簡単になりますが、私はあなたが使用できない方法を使って答えを与えたくありません。 – Caperneoignis