【问题标题】:Why is my rails container not connecting to my postgres container?为什么我的 rails 容器没有连接到我的 postgres 容器?
【发布时间】:2019-05-14 15:16:17
【问题描述】:

我是 docker rails 的新手,我正在尝试按照此处的说明在 docker 容器中实施现有的 rails 项目: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 up 后,我可以从控制台输出中看到这一点。我什至可以连接到 Rails 服务器。但是,rails 服务器无法连接到 postgres 服务器:

我的 docker 配置中是否缺少某些内容,或者我需要为 docker 更改我的 rails 配置?

【问题讨论】:

  • 我认为你需要ports 5432:5432docker-compose中的db下
  • docker-compose logs db 显示什么?可能是因为您填充了 /var/lib/postgresql/data 文件夹,您的 DB 容器甚至没有启动,这可能会导致问题。

标签: ruby-on-rails postgresql docker docker-compose ruby-on-rails-5


【解决方案1】:

该错误看起来好像没有为 postgres 转发端口尝试更改 docker-compose 以转发端口

我没有大量使用 Docker 的经验,但我认为当您重新启动 docker 容器时,您会发现您的数据库没有持久化。我建议为 db 使用外部卷

你的 Dockerfile 看起来不错

如果有更多经验的人看到这个请在 cmets 中确认

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:
   - pg-db:/var/lib/postgresql/data
   - ../db:/db
  ports:
   - "5432:5432"
 volumes:
   pg-db:
     external: true

数据库.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

【讨论】:

  • 感谢您的回复。进行更改后,我可以使用 pgadmin 看到 postgres 服务。但是,我的 rails 应用程序仍然无法查看数据库。这是否表明导轨配置存在问题?此应用已在同事的开发环境中成功实施。
猜你喜欢
  • 2023-01-31
  • 2020-02-19
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2020-10-02
相关资源
最近更新 更多