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 で実行されている) にアクセスしていることになります。
でこの郵便受け詳細に説明されています。