hiro08gh

ソフトウェアに関すること

postgresqlをdocker-composeで管理するための設定

データベース(今回はpostgresql)を開発用に準備するとき、ローカルにインストールして作ってしまうと、他のPCで作業するときにDBのデータを共有できなかったり、一から環境を整えたりと、めんどくさい作業があります。そこでdockerを使ってコマンド一発で開発環境を整えましょうみたいな記事です。おそらくN番煎じの在り来たりな記事ですが、お付き合いください。

docker-compose.ymlファイルの準備

ここではDockerfileでももちろんいいのですが、データベースですから恐らく今後アプリ側との拡張があるだろうってことでdocker-compose.ymlに設定を書いていきます。

docker-compose.yml
version: "3.1"
services:
  db:
    image: postgres
    ports:
      - "5432:5432"
    restart: always
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: test

最低限ですが、開発用なのでこれぐらいで十分かと思います。
postgreのバージョンは下記のURLから確認してください。
https://hub.docker.com/_/postgres/

Environment Variables

こちらはオプショナルですが、config fileに書いておくと、確認しやすくなります。
POSTGRES_INITDB_ARGS(postgres initdbに引数を送ることができる)
POSTGRES_INITDB_WALDIR(Postgresのトランザクションログの別の場所を定義することができる。)
があります。

サービスを動かす

設定ファイルが出来上がったので、サービスを動かしていきます。下記のコマンドを打ってください。

docker-compose up -d

docker psでコンテナが動いてることを確認してください。

docker ps

コンテナの中に入る
さきほどpsコマンドで確認したcontainer idを指定して、コンテナの中に入ります。

docker exec -it CONTAINR_ID /bin/bash

コンテナの中でpsqlのデータベースを触ることができます。

# psql --version
psql (PostgreSQL) xx.x