こんにちは。ちゃんと更新しています。
一年くらい前に、DockerでPostgreSQLコンテナを立てる時に永続化させる方法を書いていました。
ishikawa-pro.hatenablog.com
僕のブログのアクセス先の8割は👆の記事なのですが、貼ってあるDockerfileを実行しても動かなかったり、色々変なことしててずっと書き直したいと思っていました。だからは今日はもっとシンプルでベターなやり方をメモっときます。
参考資料
- 作者: Adrian Mouat,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/08/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
使うイメージについて
今回使うイメージは、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も活用すれば、いい感じの開発環境が構築できそうですね。
間違った解釈をしていたり異論があればコメントください🙇
今日はここら辺で失礼します。