sql >> データベース >  >> RDS >> PostgreSQL

DockerWebアプリコンテナーをDockerPostgreSQLコンテナーに接続する方法は?

    docker-compose v2を使用する場合、サービス間にリンクを作成する必要はありません。 Docker 1.9および1.10を使用すると、同じ(カスタム)ネットワーク上の他のコンテナーにその名前で接続できます。

    サービスの名前のいずれかを使用して接続できる必要があります またはコンテナの名前 ホスト名として。コンテナの名前がdocker-composeによって生成されることを考えると、これを使用するのはあまり便利ではありません。そのため、docker-composeはエイリアスも追加します。 各コンテナのサービス名を使用します。

    この非常に単純な例を見てください。便宜上Nginxコンテナを使用しましたが、同じことがあなたの状況にも当てはまるはずです;

    version: '2'
    services:
      web_app:
        image: nginx
      db:
        image: nginx
    

    最初にプロジェクトを開始します(仮定;

    $ docker-compose --project-name=test up -d
    Creating network "test_default" with the default driver
    Creating test_db_1
    Creating test_web_app_1
    

    次に、test_web_app_1内から「db」サービスにpingを実行します。 コンテナ:

    $ docker exec -it test_web_app_1 ping -c 2 db
    PING db (172.18.0.2): 56 data bytes
    64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.108 ms
    64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.243 ms
    --- db ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 0.108/0.175/0.243/0.068 ms
    

    test_db_1を検査する場合 コンテナの場合、docker-composeがtest_db_1の「db」エイリアスを自動的に追加したことがわかります。 コンテナ;

    $ docker inspect test_db_1
    

    与える:(NetworkSettings.Networksだけ 一部)

    "Networks": {
        "test_default": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "db",
                "002b1875e61f"
            ],
            "NetworkID": "0f9e2cddeca79e5a46c08294ed61dee273828607f99014f6410bda887626be70",
            "EndpointID": "a941ab95586a8fdafc5075f9c5c44d745f974e5790ef6048b9e90115a22fb31f",
            "Gateway": "172.18.0.1",
            "IPAddress": "172.18.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:12:00:02"
        }
    }
    



    1. 列の変更:nullからnot null

    2. 新しいMySQLドライバーによりjava.sql.SQLNonTransientConnectionExceptionが発生します:CLIENT_PLUGIN_AUTHが必要です

    3. MySQLでテーブルを表示する

    4. GROUPBYクエリを使用して行数を取得する