Как настроить базу данных Active Record в dockerfile - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь создать приложение Ruby с базой данных PostgreSQL. Я использую Sinatra для моей Ruby платформы и Active Record для моей ORM.

В Dockerfile я пытаюсь настроить базу данных и сделаю ее условной позже, чтобы она не -установить уже существующую базу данных, но когда она пытается запустить rake db:setup, я получаю следующую ошибку:

ActiveRecord::NoDatabaseError: could not translate host name "postgres" to address: Name or service not known

Однако, когда я запускаю docker-compose up -d --build БЕЗ rake db:setup, тогда запускаю rake db:setup в оболочке Bash уже запущенного контейнера он работает нормально.

Вот мой Dockerfile для бэкэнда. Также есть внешний интерфейс, но у меня нет проблем с этим:

FROM ruby:2.7

WORKDIR /app
COPY Gemfile /app/Gemfile
RUN bundle

COPY . /app
RUN rake db:setup

CMD ["ruby", "app.rb", "-o", "0.0.0.0"]

Вот мой Docker файл составления:

version: '3.7'

services:
  frontend:
    container_name: frontend
    stdin_open: true
    build:
      context: ./frontend
      dockerfile: Dockerfile
    volumes:
      - './frontend:/app'
      - '/app/node_modules'
    ports:
      - 3001:3000
    environment:
      - CHOKIDAR_USEPOLLING=true
    depends_on:
      - backend
  backend:
    container_name: backend
    build:
      context: ./backend
      dockerfile: Dockerfile
    volumes:
      - './backend:/app'
    ports:
      - 4567:4567
    depends_on:
      - postgres
  postgres:
    image: postgres
    container_name: postgres
    ports:
      - 5432
    volumes:
    - './backend/tmp/db:/var/lib/postgresql/data'
    environment:
      POSTGRES_PASSWORD: password

Вот мой database.yml. В данный момент я беспокоюсь только о разработке:

development:
  host: postgres
  user: postgres
  password: password
  adapter: postgresql
  database: backend

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...