サンプルデータ入りのPostgreSQLのコンテナをサクッと立ち上げる
先日、DBのGUIクライアントをいくつか試していました。こういう時はサンプルデータでサクッと試せた方が安心です。
そんなわけで、「サンプルデータが入ったPostgreSQLのDockerコンテナ」の立ち上げ方法を備忘録として残しておきます。
コンテナの内容
サンプルデータにはchinook-databaseを使っています。中身は「アーティスト」「楽曲」などが入っている「デジタルメディアストア」です。
「顧客」「従業員」のようなテーブルもあるので結構 実際の開発をイメージしやすい と思います。
ちなみにchinook-databaseはMySQLなどのサンプルデータもあるようです。
Dockerfile
FROM postgres:18
ADD https://github.com/lerocha/chinook-database/releases/download/v1.4.5/Chinook_PostgreSql.sql \ /docker-entrypoint-initdb.d/01_chinook.sqlRUN chmod 644 /docker-entrypoint-initdb.d/01_chinook.sql
初期化処理は/docker-entrypoint-initdb.d
にsqlファイルを置けば実行してくれます。
docker-compose.yaml
dockerコマンドで引数をつらつらと書くのは面倒なのでdocker-compose.yamlに設定を書いておきます。
services: db: build: . image: postgres-sample container_name: postgres-sample ports: - "5432:5432" environment: POSTGRES_PASSWORD: test1234 volumes: - pgdata:/var/lib/postgresql/data
volumes: pgdata:
ポート番号が被ってたら変えてください。
コンテナ立ち上げ関係のコマンドまとめ
初回のみビルドします。
docker-compose build
開始
使うときにupします。
docker-compose up
停止
実行したdocker-compose up
をCtrl+cで停止します。
mise.toml
筆者は前述のコマンドをmiseに登録してます。mise run 〇〇
をfzfを使って補完を効かせるためです(詳しくは別の記事)。
というわけでmiseの設定ファイルは次のとおり。
[tasks.up]run = "docker-compose up"
[tasks.build]run = "docker-compose build"
[tasks.clean-db]description ="DBの削除。パスワードを変更したときもやる"run = "docker-compose down -v"
接続先情報
DBクライアントで接続するときの情報は次のとおり。
Host | 127.0.0.1 |
Port | 5432 |
Database | chinook |
User | postgres |
Password | test1234 |
トラブルシューティング
一応書いておきます。
password authentication failed のエラーが出る
パスワードを変更すると次のようなエラーが出るでしょう。
password authentication failed for user "postgres"
いったんボリュームを消して、再度立ち上げればOKです。
docker-compose down -vdocker-compose up
以上、PostgreSQLでサンプルデータをサクッと試す方法でした。