Closed4

docker-composeでPostgreSQLを構築する

siropacasiropaca

元記事からの修正点

ファイル名の変更

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.

https://docs.docker.com/compose/compose-file/03-compose-file/

version の削除

トップレベルの version は参考情報になっているので不要と判断し削除。

- version: '3'

The top-level version property is defined by the Compose Specification for backward compatibility. It is only informative.

https://docs.docker.com/compose/compose-file/04-version-and-name/

トップレベルに 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.

https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-1

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.

https://docs.docker.com/compose/migrate/

siropacasiropaca

最終的な 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:

各項目の解説は参考記事を参照。

https://zenn.dev/re24_1986/articles/b76c3fd8f76aec#解説

このスクラップは4ヶ月前にクローズされました