docker-library / postgres

Docker Official Image packaging for Postgres

Home Page:http://www.postgresql.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SQL files under docker-entrypoint-initdb.d are not executed even if data directory is not initialized

SimoneGiusso opened this issue · comments

According to the documentation running docker compose on this yaml file:

services:
  masterdb:
    image: postgres:15.6-alpine
    container_name: primary-server
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: psw
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
  readonlydb:
    image: postgres:15.6-alpine
    container_name: hot-standby
    ports:
      - 5430:5432
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: psw

should initialise:

primary-server with init.sql.

However it does not happen even if the file is correctly mounted:

Screenshot 2024-04-13 at 22 21 18

Ii tried, to delete/re build the images, delete all the volumes but nothing. The init.sql script is not executed.

Compose works really hard to keep and re-use volumes between runs (including and especially "anonymous" volumes that aren't specified in the file, but are specified in the images in use), which is probably what you're running into.

Have you tried docker-compose down --volumes and/or docker-compose up --renew-anon-volumes?