0
1

More than 3 years have passed since last update.

DockerでPostgresSQLをビルドするとエラー

Last updated at Posted at 2021-03-13

環境

macOS
Docker
PostgresSQL

経緯

下記サイトを参考に、Spring-boot+PostgresSQL環境で勉強したかったので、docker-composeで環境作成。
(下記サイト様は素晴らしく、独自で追加した内容が悪かったという流れです)

コンテナdownしてもデータを残しておきたかったので、サイトを渡り歩いてdataをhostのフォルダと繋げてみました。

docker-compose.yml
version: '3.2'
services:
    db:
        image: postgres:latest
        #省略
        volumes:
            - "$PWD/db_data/:/var/lib/postgresql/data"
            - "$PWD/init_db/:/docker-entrypoint-initdb.d/"
    java:
      #省略

エラー内容

docker-compose up -dするものの、docker ps で確認すると、sb_dbのみExit(1)になる。
log見ると、

2021-03-13 05:24:51.750 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2021-03-13 05:24:51.750 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2021-03-13 05:24:51.765 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2021-03-13 05:24:51.908 UTC [27] LOG:  database system was shut down at 2021-02-28 11:28:55 UTC
2021-03-13 05:24:51.921 UTC [27] LOG:  invalid primary checkpoint record
2021-03-13 05:24:51.922 UTC [27] PANIC:  could not locate a valid checkpoint record
2021-03-13 05:24:51.924 UTC [1] LOG:  startup process (PID 27) was terminated by signal 6: Aborted
2021-03-13 05:24:51.924 UTC [1] LOG:  aborting startup due to startup process failure
2021-03-13 05:24:51.934 UTC [1] LOG:  database system is shut down

自分で追加した[- "$PWD/db_data/:/var/lib/postgresql/data"]をコメントアウトするとエラーが出ないのでここが諸悪の根源。

うまくいった方法

上記サイトを参考に、データのマウントする場所をhostでなく、dockerのvolumeに変更

docker-compose.yml
      #省略
        volumes:
            - "dbdata:/var/lib/postgresql/data"
      #省略
volumes:
  dbdata:

postgresSQLのdockerはdata部がVOLUMEとのこと。
コンテナ内部に置いていないものをhostとつなげるってところが無理があったのだという理解です。
他のサイトでもvolume作ってそことつなげるが普通とみたいです。
コンテナdownしてもデータが消えなきゃいいのでこれで解決です。
ようやくメインのSpringのお勉強にうつれそう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1