@p-oleg

Почему Docker Postgres игнорирует скрипт наполнения базы?

Мой docker-compose.yml (Windows 10)
version: '3'

services:
  db:
    image: postgres:9.5.23
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=my_db
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
    volumes:
      - postgres-data:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
volumes:
  postgres-data:


$docker-compose up ругается на вот эту строку:
./init.sql:/docker-entrypoint-initdb.d/init.sql

db_1  | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
db_1  | psql:/docker-entrypoint-initdb.d/init.sql:0: could not read from input file: Is a directory


Запускаю из текущей директории, файл init.sql присутствует.
Почему-то пишет что это не файл а директория.
Без этой строки все работает и база создается, но разумеется пустая.
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
@p-oleg Автор вопроса
Решил проблему через Dockerfile:
FROM postgres:9.5.23
ADD ./sqls/init.sql /docker-entrypoint-initdb.d/


И docker-compose.yml теперь:
version: '3'

services:
  db:
    build: .
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=my_db
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
    volumes:
      - postgres-data:/var/lib/postgresql/data
volumes:
  postgres-data:


Все завелось и заработало.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
1) то, что init.sql действительно файл вы уже проверяли?
2) попробуйте смаппировать так:
- в директорию sqls скопируйте init.sql
- sqls:/docker-entrypoint-initdb.d
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 сент. 2020, в 09:09
2000 руб./за проект
24 сент. 2020, в 08:35
50000 руб./за проект
24 сент. 2020, в 08:23
10000 руб./за проект