Docker で PostgreSQL を起動するときによく使うオプション

PostgreSQL は Docker Hub に公式イメージがあり、データベースを手っ取り早く立てたいときや、コマンドを試すときにも便利に使える。 ただ、毎回どのようにオプションを指定して起動するのかを調べて解決しているので、オプションの意味を整理しておく意味で記事として書いておく。

環境

% sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H114

% docker --version
Docker version 20.10.2, build 2291f61

起動コマンド

% docker run --rm -d \
    -p 6432:5432 \
    -v postgres:/var/lib/postgresql/data \
    postgres:latest

コマンド中のそれぞれの意味は以下のようになる。

  • --rm
    • コンテナの停止時に、コンテナを削除する。
  • -d
    • バックグラウンドで実行する。
    • これを指定しないと、起動コマンドを実行したターミナルがコンテナのログを出し続ける状態になるため、DBへの接続などは別のターミナルから行う必要があり、若干面倒くさい。
  • -p 6432:5432
    • コンテナの5432番ポートへ、localhostの6432番ポートでアクセスできるようにする。
    • localhost 側のポート番号は、空いている番号であればどれでも良いが、わかりやすいように x543 番にすることが多いような気がする。
  • -v postgres:/var/lib/postgresql/data
    • ボリューム postgres を、/var/lib/postgresql/data にマウントする。/var/lib/postgresql/data は、データ本体および設定ファイルが入っているディレクトリ。
    • コンテナを停止して削除しても、このディレクトリを再マウントすることでデータを再度利用することができる。
  • postgres:latest
    • latest(最新)バージョンの PostgreSQL を利用する。
    • 利用できるバージョンは こちら から確認できる。この記事を書いている2021年3月10日時点では、最新バージョンは13.2。

接続する

psql を使って接続してみる。psql が入っていない場合は Homebrew でインストールする。 brew install psql ではないので若干注意が必要。

% brew install postgresql

(インストール時のメッセージは省略)

% psql --version
psql (PostgreSQL) 13.2

ポート番号を -p、ユーザ名を -U で指定して接続する。

% psql -h localhost -p 6432 -U postgres
psql (13.2)
Type "help" for help.

postgres=#