Заполнение базы данных в Docker с использованием docker -compose заканчивается порочным циклом - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь заполнить базу данных PostgreSQL, когда запускаю команду docker -compose.

Проблема

Когда запускается мой сервер NodeJS, он автоматически создает таблицы внутри базы данных.

Это означает, что при запуске базы данных я не могу выполнять какие-либо запросы (поскольку таблицы не существуют).

Чтобы создать таблицы, мой сервер должен иметь соединение с база данных.

Это порочный цикл?

docker -компонентный файл

server-debug:
  build:
    context: ./services/server # Location of the Dockerfile
    dockerfile: Dockerfile.debug # Which Dockerfile
  volumes: 
    - './services/server:/usr/src/app'
    - '/usr/src/app/node_modules'
  environment: 
    - NODE_ENV=debug
  depends_on:
    - database-debug

database-debug:
  build:
    context: ./services/database
    dockerfile: Dockerfile.debug
  environment:
    POSTGRES_URI: 'postgres://postgres:12345@database-debug:5432/postgres' # Connection string
    POSTGRES_PASSWORD: 12345
  ports:
    - '5432:5432' # Local port : Remote port

Dockerfile сервера

FROM node:13.10


WORKDIR /usr/src/app


COPY package.json ./
COPY tsconfig.json ./

RUN npm install

COPY . .

CMD ["npm", "start"]

База данных Dockerfile

FROM postgres:12.2

# Create user and postgres
ENV POSTGRES_USER root
ENV POSTGRES_PASSWORD 12345
ENV POSTGRES_DB postgres
ENV POSTGRES_URI 'postgres://postgres:12345@database-debug:5432/postgres'

# COPY init.sql /docker-entrypoint-initdb.d/
...