LoginSignup
100
88

More than 3 years have passed since last update.

とりあえず Docker で PostgreSQL を動かす手順

Last updated at Posted at 2018-03-26

例えば、数 GB ある CSV ファイルをローカルマシンで雑に集計したいときは Excel や Pandas だとちょっと厳しかったりするので、PostgreSQL みたいな RDBMS にツッコんで SQL でやりたい。

雑にサーバに立てる方法といえば Docker 。
PostgreSQL は Docker Hub に公式イメージがあるので安心して使えて便利。

しかし使うたびに「オプション何指定したら良いんだっけ」となるので備忘録として手順をまとめておく。
詳しいことはすべて Docker Hub のページに書いてあるのでそこを読めば分かる。

注意点として、今回は雑にサーバ立てる場合の解説なので、アプリケーションを作る場合はちゃんと docker-compose.yml を書いたほうがいいと思う。

コンテナを起動する

$ docker run --rm -d \
    -p 15432:5432 \
    -v postgres-tmp:/var/lib/postgresql/data \
    -e POSTGRES_HOST_AUTH_METHOD=trust \
    postgres:12-alpine
  • コンテナの停止時には削除する (--rm)
    • ボリュームにデータを保存する設定 (後述) なので、コンテナは消えても問題ない
  • ホスト側のポートは適当に 15432 にした (ご自由に)
  • ボリューム postgres-tmp/var/lib/postgresql/data にマウントする
    • ボリュームが存在しない場合は新規作成される
    • データはこのボリュームに保存されるため、コンテナを削除しても保存したデータは削除されない
    • 環境変数 PGDATA を指定すればコンテナ内のデータディレクトリを変更できるが、特に変更する必要はないと思う
  • パスワードなしでアクセスできる設定 (POSTGRES_HOST_AUTH_METHOD=trust)
    • もちろんセキュリティ的にはよくない設定なので、外部公開するサーバなどでやってはいけない
  • イメージは 12-alpine (Alpine Linux ベースのバージョン 12 系最新) を使った

接続してみる

何らかの PostgreSQL クライアントを使って接続してみる。
psql コマンドを使うとこんな感じ。

$ psql -h localhost -p 15432 -U postgres
  • 初回起動時に特に環境変数を指定しなかった場合は postgres というユーザと postgres というデータベースが作成される
  • 初回起動時に環境変数でパスワードを指定しなかった場合はパスワードなしで接続できるが、その場合は localhost 以外からの接続はできない
100
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
88