🐳

【Docker】postgres image のバージョン互換性対応

2021/10/10に公開

はじめに

Postgresql の Docker image が立ち上がらない事象の対応です。

原因としては、docker-compose.yml に記載している lastest (最新指定) が原因で起きた事象です。

image: postgres:latest

対象 Error

Error 内容を確認する為に、-d はつけずに実行。

$ docker-compose up         
[+] Running 1/0
 ⠿ Container shift_schedule-db-1  Created                                                                                                              0.0s
Attaching to shift_schedule-db-1
shift_schedule-db-1  | 
shift_schedule-db-1  | PostgreSQL Database directory appears to contain a database; Skipping initialization
shift_schedule-db-1  | 
shift_schedule-db-1  | 2021-10-10 06:05:15.565 UTC [1] FATAL:  database files are incompatible with server
shift_schedule-db-1  | 2021-10-10 06:05:15.565 UTC [1] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.0 (Debian 14.0-1.pgdg110+1).
shift_schedule-db-1 exited with code 1

どうやら、既に postgresql を version 13 で初期化しているのに、docker-compose.yml では lastest と、最新指定でファイルを書いていたのが Error 原因のようです。

今回の対応

対象 volume data を削除

今回は、DBの中身を一掃しても問題なかったので、volumes 先 の data を削除して対応しました。

  1. Docker DashBoard で 対象の volume data を確認
    ここで、IN USE となっていて削除できなかったので、 docker-compose down で一旦コンテナを削除しました。

  2. 3点リーダ から Remove を選択

  3. Remove を選択

以上で、volume data を削除することができますね。

他に考えられる対応

image: postgres:latest

latest で最新にせず 対応バージョン で image を指定する。

今回の Error に合わすなら、PostgreSQL version 13 に合わせるとよさそうです。

image: postgres:13.0

まとめ

Error 文を確認することで、結構すんなり対応することができました!
引き続き、次の作業にかかりたいと思います!!

ありがとうございました!

GitHubで編集を提案

Discussion