😵‍💫

Dockerでpostgresを立ち上げたときにRestartingが出た時の備忘録

2024/02/17に公開

何が起きたか

VPS上にdocker-compose.yamlを用意してpostgresを立ち上げたが、docker psで確認するとずっとRestartingになっていた。

version: '3.8'
services:

  postgres:
    image: postgres:14.2-alpine
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - ./docker/postgres/init.d:/docker-entrypoint-initdb.d
      - ./docker/postgres/pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
      POSTGRES_DB: postgres
    hostname: postgres
    restart: always
    user: root

docker compose upで立ち上げてコンソールを見ると、以下が定期的に出力されていました。

FATAL:  could not open directory "pg_notify": No such file or directory
LOG:  database system is shut down

また、ローカルの環境では問題なく動作確認はできており、以下のような状態でした。

  1. ローカル環境で動作していたプロジェクトをGithubにアップ
  2. VPS上にclone
  3. VPS上でdocker compose up -dで動かす。

原因

docker-compose.yamlに以下で定義していあるdockerフォルダ内にゴミがありました。

    volumes:
      - ./docker/postgres/init.d:/docker-entrypoint-initdb.d
      - ./docker/postgres/pgdata:/var/lib/postgresql/data

ローカルで動作確認をした際に作成されたdockerフォルダも一緒にcommit&pushしてVPS環境で動かしていました。

dockerフォルダをフォルダごと削除し改めてdocker compose upを叩いたら起動するようになりました。

他試したが効果がなかったもの

docker compose drop -vでボリュームも削除して起動し直す
docker rmi 'imageのID'でイメージを削除して起動し直す
postgresのバージョンを変えてみたり

学び

dockerフォルダも.gitignoreに含める

Discussion