Я устанавливаю простой бэкэнд, который выполняет действие CRUD с базой данных postgres и хочет автоматически создавать базу данных и миграцию при запуске docker-compose up.
Я уже пытался добавить приведенный ниже код в Dockerfile или entrypoint.sh , но ни один из них не работает.
createdb --host=localhost -p 5432 --username=postgres --no-password pg_development
createdb db:migrate
Этот код будет работать, если запускаться отдельно после полного запуска докера
Я уже пытался добавить - ./db-init:/docker-entrypoint-initdb.d
к томам, но это тоже не сработало
Это Dockerfile
FROM node:10.12.0
# Create app directory
RUN mkdir -p /restify-pg
WORKDIR /restify-pg
EXPOSE 1337
ENTRYPOINT [ "./entrypoint.sh" ]
Это мой docker-compose.yml
version: '3'
services:
db:
image: "postgres:11.2"
ports:
- "5432:5432"
volumes:
- ./pgData:/var/lib/psotgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD:
POSTGRES_DB: pg_development
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- .:/restify-pg
environment:
DB_HOST: db
entrypoint.sh (здесь я получаю createdb: command not found
)
#!/bin/bash
cd app
createdb --host=localhost -p 5432 --username=postgres --no-password pg_development
sequelize db:migrate
npm install
npm run dev
Я ожидаю, что при запуске docker произойдет миграция и создание базы данных.