Docker for WindowsとLaradockでpostgresのコンテナが起動できない場合の対処

Docker Windows ツール

LaradockをDocker for Windowsを使って動かしている場合、postgresのコンテナが起動できない事があります。

>docker-compose up -d postgres
Recreating laradock_postgres_1 ...
Recreating laradock_postgres_1 ... done

コンソール上ではcreating laradock_postgres_1 … done と表示されているのですが、すぐに終了してしまっています。

ログを見るとFATAL: data directory “/var/lib/postgresql/data” has wrong ownership と出力されていて、volumeのマウントに失敗しているようです。

>docker logs 50d71d12f0e4
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
2018-11-24 11:45:31.059 UTC [47] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership
2018-11-24 11:45:31.059 UTC [47] HINT: The server must be started by the user that owns the data directory.
child process exited with exit code 1
initdb: removing contents of data directory "/var/lib/postgresql/data"
running bootstrap script ...

解決方法としては、Laradocのdocker-compose.ymlを修正します。

(略)
### PostgreSQL ###########################################
    postgres:
      build: ./postgres
      volumes:
        # ここの「/data」を削除する
        #- ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
        - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql  
        - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
(略)

再度docker-compose up -d postgres を実行すると、上手く起動しました。

なんでやねん。という気はしますが、上手く行ったのでひとまず良しとします。

以上です。

コメント/ピンバック

タイトルとURLをコピーしました