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

外部からDockerコンテナでPostgresqlに接続する

    この方法でPostgresを実行できます(ポートをマップします):

    docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
    

    これで、コンテナのポート5432をサーバーのポート5432にマッピングできました。 -p <host_port>:<container_port> 。これで、postgresにpublic-server-ip:5432からアクセスできるようになりました。

    テストするには:postgresデータベースを実行します(上記のコマンド)

    docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
    05b3a3471f6f        postgres            "/docker-entrypoint.s"   1 seconds ago       Up 1 seconds        0.0.0.0:5432->5432/tcp    some-postgres
    

    コンテナ内に移動してデータベースを作成します:

    docker exec -it 05b3a3471f6f bash
    [email protected]:/# psql -U postgres
    postgres-# CREATE DATABASE mytest;
    postgres-# \q
    

    ローカルホスト(ツールまたはpsqlクライアントがある場所)に移動します。

    psql -h public-ip-server -p 5432 -U postgres
    

    (パスワードmysecretpassword)

    postgres=# \l
    
                                 List of databases
       Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
    -----------+----------+----------+------------+------------+-----------------------
     mytest    | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
     postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
     template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres   
    

    つまり、ローカルホストからデータベース(サーバー上のdockerで実行されている)にアクセスしていることになります。

    この投稿では、詳細に説明されています。



    1. 2つのテーブル間の差異を返すSQLクエリ

    2. PostgreSQLの日付から年の日を取得する方法

    3. Postgresqlで同等のテーブル値パラメーター

    4. クエリでのANSI1992JOINとCOMMAの混合