外部からDockerコンテナ内のPostgresqlに接続する 質問する

外部からDockerコンテナ内のPostgresqlに接続する 質問する

Docker コンテナ内のサーバーに PostgreSQL があります。外部、つまりローカル コンピューターから接続するにはどうすればよいでしょうか。それを可能にするにはどのような設定を適用すればよいでしょうか。

ベストアンサー1

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
root@05b3a3471f6f:/# 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 で実行されている) にアクセスしていることになります。

この郵便受け詳細に説明されています。

おすすめ記事