Я пытаюсь создать приложение 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
Я что-то упустил?