ishikawa_pro's memorandum

若手webエンジニアの備忘録です.

Swift Node.js Docker AWS etc...色々やります。

Docker + PostgreSQL 永続化の話

こんにちは。ちゃんと更新しています。
一年くらい前に、DockerでPostgreSQLコンテナを立てる時に永続化させる方法を書いていました。
ishikawa-pro.hatenablog.com
僕のブログのアクセス先の8割は👆の記事なのですが、貼ってあるDockerfileを実行しても動かなかったり、色々変なことしててずっと書き直したいと思っていました。だからは今日はもっとシンプルでベターなやり方をメモっときます。

参考資料

Docker

Docker

使うイメージについて

今回使うイメージは、PostgreSQLの公式リポジトリです。
imageのバージョンは雑にlatestです。
https://hub.docker.com/_/postgres/

データコンテナの作成

まずは、データコンテナ作ります

docker create --name dbdata postgres

データコンテナは、起動する必要がないのでdocker createコマンドでコンテナだけ作っておきます。

データコンテナにpostgres imageを使う理由

データコンテナのためにbusyboxとかを使う人も多いと思います。今回postgresイメージでデータコンテナを用意している理由としては、

  • 同じイメージを使えば、別のイメージをpullする必要がないから余分な容量を消費しない
  • posrgres imageでデータコンテナを作っているからパーミッションが正しく設定されている

などのメリットがあるからです。

データコンテナをマウントしてpostgresコンテナを起動

--volumes-fromオプションでデータコンテナの名前を指定してマウントさせてpostgresコンテナを起動すれば永続化完了です。

docker run -d --rm -p 5432:5432 --volumes-from dbdata postgres

ユーザーとパスワードを指定しなければ、

  • user : postgres
  • password : mysecretpassword

です。
テーブル作ったりしてからコンテナを消して、データコンテナをマウントした違うコンテナを立てて見れば永続化されてることが確認できると思います。
詳しいpostgres imageの使い方とかは公式のdocumentを見てください。

終わりに

1年前の記事よりかなりスマートにできたと思います(笑)。docker-composeも活用すれば、いい感じの開発環境が構築できそうですね。
間違った解釈をしていたり異論があればコメントください🙇
今日はここら辺で失礼します。