0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLでコンテナを作成する

Posted at

概要

PostgreSQLのデータベースをDockerコンテナ上で運用する。
WebアプリケーションのDBとして扱うための設定を行う。

  1. コンテナを起動する
  2. ボリュームマウントを設定する
  3. PGAdminからコンテナ内のデータベースにアクセスする
  4. 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タブにて、適切なホスト名とポート番号を入力する。
以下、設定例を示す。
スクリーンショット 2024-01-02 19.08.28.png

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:

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?