概要
PostgreSQLのデータベースをDockerコンテナ上で運用する。
WebアプリケーションのDBとして扱うための設定を行う。
- コンテナを起動する
- ボリュームマウントを設定する
- PGAdminからコンテナ内のデータベースにアクセスする
- Docker Composeを設定する
コンテナを起動する
今回は、コンテナ内のファイルシステムなどの設定を変更しないため、Dockerfileは作成せず、PostgreSQLの公式イメージから直接コンテナを起動する。
$ docker run --name some-postgres -e POSTGRES_PASSWORD=secret postgres
-
--name
- コンテナ名を設定する
-
-e POSTGRES_PASSWORD=secret
- 必須設定の環境変数
- 特権管理者のパスワードを設定する
-
postgres
- コンテナを起動するイメージを指定する
コンテナ内のDB操作は、以下のコマンドから実行可能
$ docker exec -it ${container_id} psql -U postgres
ボリュームマウントを設定する
ボリュームマウントを設定することで、コンテナを削除した場合にも、データを残すことができる。
以下の手順から、生成したボリュームをコンテナ内のファイルシステムにマウントすることができる。
# 名前付きボリュームを作成する。
$ docker volume create postgresDB
# コンテナ起動時にボリュームマウントする。
$ docker run --name db_container \
-dp 127.0.0.1:5432:5432 \
--mount type=volume,src=postgresDB,target=/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=secret \
postgres
/var/lib/postgresql/data
PostgreSQLのデータは、コンテナ内の上記ディレクトリに保存される。
PGAdminからコンテナ内のデータベースにアクセスする
PGAdminでは、コンテナ内で起動しているPostgreSQLのデータベースに対して、リモート接続することができる。
PGAdminの設定画面のConnectionタブにて、適切なホスト名とポート番号を入力する。
以下、設定例を示す。
Docker Composeを設定する
docker run
コマンドの設定内容をdocker-compose.yml
に置き換えた。
services:
db:
image: postgres
ports:
- 127.0.0.1:5432:5432
volumes:
- postgresDB:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: 'secret'
volumes:
postgresDB: