Docker Composeを使ってPostgreSQL公式イメージを起動し、設定ファイルをカスタマイズ
PostgreSQL公式Dockerイメージの設定ファイルをカスタマイズする方法
前提条件
- Dockerがインストールされていること
手順
- PostgreSQL公式Dockerイメージをプルする
docker pull postgres
- 設定ファイルを作成する
vim postgresql.conf
# PostgreSQLのバージョン
default_version = '14'
# データベースの保存場所
data_dir = '/var/lib/postgresql/data'
# 認証方式
auth_method = 'trust'
# 接続数の制限
max_connections = 100
# リスニングポート
port = 5432
# 文字コード
encoding = 'UTF-8'
# ロケール
locale = 'ja_JP.UTF-8'
- Docker Composeファイルを作成する
vim docker-compose.yml
version: '3'
services:
postgres:
image: 'postgres:${default_version}'
volumes:
- './postgresql.conf:/etc/postgresql/${default_version}/main/postgresql.conf'
ports:
- '5432:5432'
- コンテナを起動する
docker-compose up -d
- データベースへの接続を確認する
psql -h localhost -p 5432 -U postgres
パスワードは設定していないため、空欄でEnterキーを押します。
- 環境に合わせて設定を調整してください。
日本語での解説
このチュートリアルでは、PostgreSQL公式Dockerイメージの設定ファイルをカスタマイズする方法について、日本語で分かりやすく解説しました。
postgresql.conf
# PostgreSQLのバージョン
default_version = '14'
# データベースの保存場所
data_dir = '/var/lib/postgresql/data'
# 認証方式
auth_method = 'trust'
# 接続数の制限
max_connections = 100
# リスニングポート
port = 5432
# 文字コード
encoding = 'UTF-8'
# ロケール
locale = 'ja_JP.UTF-8'
# ログレベル
log_level = 'debug'
# 共有メモリ
shared_buffers = '128MB'
# カーネルバッファ
kernel_shm_segments = '256'
# 最大接続数
max_connections = '100'
# スーパーユーザー
superuser = 'postgres'
# パスワード認証
password_encryption = 'scram-sha-256'
# 接続タイムアウト
connection_timeout = '60'
# アイドルタイムアウト
idle_in_transaction_session_timeout = '600'
# ロックタイムアウト
statement_timeout = '0'
# 拡張モジュール
shared_preload_libraries = 'pg_stat_statements'
docker-compose.yml
version: '3'
services:
postgres:
image: 'postgres:${default_version}'
volumes:
- './postgresql.conf:/etc/postgresql/${default_version}/main/postgresql.conf'
ports:
- '5432:5432'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=mydb
postgresql.conf
: PostgreSQLの設定ファイルdocker-compose.yml
: Docker Composeファイル
設定項目の説明
default_version
: PostgreSQLのバージョンdata_dir
: データベースの保存場所auth_method
: 認証方式max_connections
: 接続数の制限port
: リスニングポートencoding
: 文字コードlocale
: ロケールlog_level
: ログレベルshared_buffers
: 共有メモリkernel_shm_segments
: カーネルバッファsuperuser
: スーパーユーザーpassword_encryption
: パスワード認証connection_timeout
: 接続タイムアウトidle_in_transaction_session_timeout
: アイドルタイムアウトstatement_timeout
: ロックタイムアウトshared_preload_libraries
: 拡張モジュール
環境変数を使う
Docker起動時に環境変数を設定することで、設定ファイルを編集せずに設定を変更することができます。
例:
docker run -e POSTGRES_PASSWORD=mypassword postgres
この例では、POSTGRES_PASSWORD
環境変数を設定することで、PostgreSQLのパスワードをmypassword
に変更しています。
Docker Compose環境変数を使う
Docker Composeを使用している場合は、docker-compose.yml
ファイルで環境変数を設定することができます。
version: '3'
services:
postgres:
image: 'postgres'
environment:
- POSTGRES_PASSWORD=mypassword
Dockerfileを使う
Dockerfileを使って独自のDockerイメージを作成することができます。
Dockerfileでは、設定ファイルを編集したり、環境変数を設定したりすることができます。
FROM postgres
RUN echo "local all all trust" >> /etc/postgresql/14/main/pg_hba.conf
CMD ["postgres", "-D", "/var/lib/postgresql/data"]
この例では、Dockerfileを使ってPostgreSQLの認証方式をtrust
に変更しています。
postgresql docker