docker-composeでPostgreSQLを構築する
docker-compose
でローカル開発環境用の PostgreSQL
を立ち上げることを目標とする。
PostgreSQL
のバージョンは、現在 (2024/1/11) 最新の 16.1
を使用する。
基本的な手順は以下の記事を参照すればよさそう。
元記事からの修正点
ファイル名の変更
docker-compose.yaml
より compose.yaml
のほうが推奨されているのでリネーム。
The default path for a Compose file is compose.yaml (preferred) or compose.yml that is placed in the working directory. Compose also supports docker-compose.yaml and docker-compose.yml for backwards compatibility of earlier versions. If both files exist, Compose prefers the canonical compose.yaml.
version の削除
トップレベルの version
は参考情報になっているので不要と判断し削除。
- version: '3'
The top-level version property is defined by the Compose Specification for backward compatibility. It is only informative.
トップレベルに name を指定
トップレベルにサービス名を name として指定。
+ name: "SERVICE_NAME"
services:
postgres:
...
container_name の削除
トップレベルに name
を指定して、container_name
を省略すると、<SERVICE_NAME>-postgres-1
のようになるためあえて省略。
container_name
を指定すると、container_name
だけの表示になる。
services:
postgres:
image: "postgres:16.1"
- container_name: postgres
environment:
...
ports を文字列に変更
ポート番号は常に文字列で扱うことが推奨されているため、文字列に変更。
ports:
- - 5433:5432
+ - "5433:5432"
When mapping ports in the HOST:CONTAINER format, you may experience erroneous results when using a container port lower than 60, because YAML parses numbers in the format xx:yy as a base-60 value. For this reason, we recommend always explicitly specifying your port mappings as strings.
docker-compose コマンド変更
Compose V2 から docker-compose
より docker compose
の使用が推奨されているため、docker compose
コマンドを使用する。
With Docker Desktop, Compose V2 is always accessible as docker compose. Additionally, the Use Compose V2 setting is turned on by default, which provides an alias from docker-compose.
最終的な compose.yaml
name: "SERVICE_NAME"
services:
postgres:
image: postgres:16.1
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: p@ssw0rd
POSTGRES_DB: SERVICE_NAME
ports:
- "5432:5432"
volumes:
- v_postgres_data:/var/lib/postgresql/data
- ./postgresql/postgresql.conf:/etc/postgresql/postgresql.conf
command: postgres -c config_file=/etc/postgresql/postgresql.conf
volumes:
v_postgres_data:
各項目の解説は参考記事を参照。