Почему мой контейнер rails не соединяется с моим контейнером postgres? - PullRequest
1 голос
/ 14 мая 2019

Я новичок в docker rails и пытаюсь реализовать существующий проект rails в контейнерах docker, следуя приведенным ниже инструкциям: https://hackernoon.com/dockerizing-an-existing-rails-postgresql-app-with-docker-compose-a30a7e1b3f40

docker-compose.yml

version: '3'
services:
 web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
   - .:/myapp
  ports:
   - "3000:3000"
  depends_on:
   - db
 db:
  image: postgres
  volumes:
   - ./tmp/db:/var/lib/postgresql/data

База данных.yml

default: &default
 adapter: postgresql
 encoding: unicode
 host: db
 username: postgres
 pool: 5
development:
 <<: *default
 database: myapp_development

Dockerfile

FROM ruby:2.5.3
RUN apt-get update && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

Все контейнеры созданы и вращаются просто отлично.Я могу видеть это из вывода консоли после запуска docker-compose.Я даже могу подключиться к серверу rails.Однако сервер rails не может подключиться к серверу postgres:

enter image description here

Есть ли что-то, чего мне не хватает в моей конфигурации докера, или мне нужно сделатьизменить конфигурацию рельсов для докера?

1 Ответ

1 голос
/ 14 мая 2019

Эта ошибка выглядит так, как будто она не пересылает порт для postgres, попробуйте изменить docker-compose для переадресации порта

У меня нет большого опыта работы с Docker, но я думаю, вы обнаружите, что ваша база данных не сохраняется, когда вы перезапускаете контейнеры Docker. Я бы предложил использовать внешний объем для дБ

Ваш Dockerfile выглядит нормально

Если кто-то с большим опытом видит это, пожалуйста, подтвердите в комментариях

докер-compose.yml

version: '3'
services:
 web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
   - .:/myapp
  ports:
   - "3000:3000"
  depends_on:
   - db
 db:
  image: postgres
  volumes:
   - pg-db:/var/lib/postgresql/data
   - ../db:/db
  ports:
   - "5432:5432"
 volumes:
   pg-db:
     external: true

database.yml

default: &default
 adapter: postgresql
 encoding: unicode
 host: db
 username: postgres
 pool: 5
development:
 <<: *default
 database: myapp_development

Dockerfile

FROM ruby:2.5.3
RUN apt-get update && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
...