😵💫
Dockerでpostgresを立ち上げたときにRestartingが出た時の備忘録
何が起きたか
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
また、ローカルの環境では問題なく動作確認はできており、以下のような状態でした。
- ローカル環境で動作していたプロジェクトをGithubにアップ
- VPS上にclone
- 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