sailで作ったpostgresのデータベースに接続する

2024/03/30に公開2

sailで作ったpostgresのデータベースに接続する

sailでのlaravelのインストール

終わっている方は飛ばしてください。

curl -s "https://laravel.build/example-app?with=pgsql" | bash

最後にパスワードを聞かれるので入力する

sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
sail up -d

これでlaravelのプロジェクトが立ち上がる。localhost:80にアクセスするとlaravelの画面が表示されることを確認。

sessionsテーブルがないというエラーが出る場合は、.envSESSION_DRIVERfileに変更するか、以下のコマンドを実行する。

sail artisan migrate

.envファイルのDBに関わる初期値は以下の通り。

DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

postgresのデータベースに接続する

phpのコンテナから接続する

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS                 PORTS                                                  NAMES
a093c9bac631   sail-8.3/app   "start-container"        2 hours ago   Up 2 hours             0.0.0.0:80->80/tcp, 0.0.0.0:5173->5173/tcp, 8000/tcp   example-app-laravel.test-1
a24686a8d565   postgres:15    "docker-entrypoint.s…"   2 hours ago   Up 2 hours (healthy)   0.0.0.0:5432->5432/tcp                                 example-app-pgsql-1
$ docker container exec -it a093c9bac631 bash
root@a093c9bac631:/var/www/html# psql -U sail -h pgsql laravel
Password for user sail:

パスワードは.envファイルの通り、passwordを入力する。

ポイントは、-h pgsqlの部分で、dockerで立ち上げたdbコンテナは同じくdockerで立ち上げたappコンテナから見ると、pgsqlというホスト名でアクセスできる。

postgresのコンテナに入って接続する

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS                 PORTS                                                  NAMES
a093c9bac631   sail-8.3/app   "start-container"        2 hours ago   Up 2 hours             0.0.0.0:80->80/tcp, 0.0.0.0:5173->5173/tcp, 8000/tcp   example-app-laravel.test-1
a24686a8d565   postgres:15    "docker-entrypoint.s…"   2 hours ago   Up 2 hours (healthy)   0.0.0.0:5432->5432/tcp                                 example-app-pgsql-1
$ docker container exec -it a24686a8d565 bash

コンテナ内で以下を実行すると、データベースに接続できる。

root@a24686a8d565:/# psql -U sail laravel

データベースの中身を見る

                                             List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | ICU Locale | Locale Provider | Access privileges 
-----------+-------+----------+------------+------------+------------+-----------------+-------------------
 laravel   | sail  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 postgres  | sail  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 template0 | sail  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/sail          +
           |       |          |            |            |            |                 | sail=CTc/sail
 template1 | sail  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/sail          +
           |       |          |            |            |            |                 | sail=CTc/sail
 testing   | sail  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
(5 rows)

あとは、select文などを実行してデータベースの中身を見ることができる。

GitHubで編集を提案

Discussion

SAWSAW

sail psql でも PostgreSQL のコンテナに入って、データベースに接続できると思いますので、確認してみてください。

PostgreSQL については私の方では動作確認していませんが、 MySQL については sail mysql でデータベースに接続できることを確認しています。

あかつかあかつか

ありがとうございます!
psqlでいけました!こっちの方が断然いいですね

追記します〜