我创建了一个Dockerfile,用于从官方docker-compose网站导入ruby。我使用docker compose将其与Postgres集成。当执行docker-compose up命令时,PostgreSQL启动,但我无法连接到它。主要问题在于ruby数据库配置,因为我无法更改它以侦听另一个主机并设置默认用户。我不知道如何在不更改ruby数据库配置的情况下连接这两个容器。
Docker-compose
如果我在 Web 容器内运行 "bundle exec rake db:create",会出现错误:
我不知道应该设置哪个环境变量来连接在一起。
Dockerfile
FROM ruby:2.3.4
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
Docker-compose
version: '3'
services:
db:
image: postgres:9.6
ports:
- "5432:5432"
web:
build: .
ports:
- "4000:4000"
depends_on:
- db
Ruby数据库.yml
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: project_development
如果我在 Web 容器内运行 "bundle exec rake db:create",会出现错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我不知道应该设置哪个环境变量来连接在一起。
host
是database
,但是在我的database.yml
文件中没有定义host
。在定义后,一切都正常工作了。 - Promise Preston