Yanonoblog!

こつこつと

Docker環境のPostgreSQLにアクセスする

はじめに

本記事では、Docker環境のPostgreSQLにアクセスする方法を簡単にまとめています。

Docker環境のPostgreSQLにアクセスする手順

$ docker ps (DBコンテナのNAMESを確認)

# 実行
docker ps   

# 結果 
CONTAINER ID   IMAGE                  COMMAND                  CREATED       STATUS       PORTS                    NAMES
1c861bde731b   viisu_backend          "entrypoint.sh rails…"   5 hours ago   Up 5 hours   0.0.0.0:3000->3000/tcp   viisu-backend-1
da39d9fe9b52   viisu_frontend         "docker-entrypoint.s…"   5 hours ago   Up 5 hours   0.0.0.0:8000->3000/tcp   viisu-frontend-1
e52ca3f2e4a2   postgres:11.6-alpine   "docker-entrypoint.s…"   5 hours ago   Up 5 hours   0.0.0.0:5432->5432/tcp   viisu-postgres-1

上記のNAMEを見るとコンテナ名が確認できるため、コピーします。

$ docker exec -it DB名 bash (Docker環境のDBにアクセス)

先程コピーしたコンテナ名を指定して下記のようにコマンドを実行することで

Docker環境のデータベースにアクセスすることができます。

# 実行
docker exec -it viisu-postgres-1 bash

# 結果             
bash-5.0#

上記の結果はコンテナ内にbash シェルでログインした状態です。

-itオプション - インタラクティブに接続する

iオプションは、標準入力を開いたままにするために使用され、tオプションはTTYを割り当てるために使用されます。

TTYを割り当てることで、コンテナ内でターミナルを使用することができます。

-itを指定することで、コンテナにログインしてコマンドを実行し、ターミナルを使って対話的に作業することができます。

$ psql -U postgres -l (DBをリスト表示)

PostgreSQLpsqlコマンドを使用して、データベースに接続してデータベースのリストを表示しています。

# 実行
bash-5.0# psql -U postgres -l

# 結果
List of databases
         Name         |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
----------------------+----------+----------+-------------+-------------+-----------------------
 postgres             | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 postgres_development | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 postgres_test        | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0            | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                      |          |          |             |             | postgres=CTc/postgres
 template1            | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                      |          |          |             |             | postgres=CTc/postgres
(5 rows)

ymlのユーザー名(postgres)に紐づくDBリストのみを表示しています。

**-l**オプションは、リスト形式で全てのデータベースを表示するようにpsqlに指示しています。

$ psql -U postgres oiwaii (DBのNAMEを指定してpostgreSQLを起動)

psqlコマンドを使用して、PostgreSQLサーバーに接続できます。

ユーザー名が"postgres"で、データベース名も"postgres"である場合の接続方法を示しています。

bash-5.0# psql -U postgres postgres

# 結果 (データベース名: postgresのbashシェルにアクセスした状態になる)
psql (11.6)
Type "help" for help.

postgres=#

接続が成功すると、"postgres=#"のように、psqlのプロンプトが表示されます。ここで、SQLクエリを実行することができます。

$ \d users例: usersテーブルを確認できる)

postgres=# \d users
                                          Table "public.users"
         Column         |              Type              | Collation | Nullable |        Default        
------------------------+--------------------------------+-----------+----------+-----------------------
 id                     | uuid                           |           | not null | gen_random_uuid()
 name                   | character varying              |           | not null | 
 created_at             | timestamp(6) without time zone |           | not null | 
 updated_at             | timestamp(6) without time zone |           | not null | 
 email                  | character varying              |           | not null | ''::character varying
 encrypted_password     | character varying              |           | not null | ''::character varying
 reset_password_token   | character varying              |           |          | 
 reset_password_sent_at | timestamp without time zone    |           |          | 

終了コマンド

終了するときは下記のようにします。

# 実行 (postgresデータベースから抜ける)
postgres-# \q

# 実行 (コンテナから抜ける)
bash-5.0# exit

# 結果
exit
~/w/v/backend ❯❯❯

おわりに

コメント

本記事の内容は以上になります!

参考になったり学びのきっかけになりますと幸いです。

間違いがありましたら修正いたしますので、ご指摘ください。

興味があれば他の記事も更新していきますので是非ご覧になってください♪


プログラミングスクールのご紹介 (卒業生より)

お世話になったプログラミングスクールであるRUNTEQです♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky