Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
73
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@hoto17296

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

例えば、数 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 以外からの接続はできない
73
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
73
Help us understand the problem. What is going on with this article?