Docker:在Rails应用程序中build立PostgreSQL连接的问题

我已经研究了几天,现在终于到了可以帮助的地步。 我正在尝试使用颇受欢迎的Phusion Passenger Docker镜像作为我的基础镜像来启动运行Rails应用程序的简单Docker镜像。 问题在于build立到PostgreSQL数据库的连接。

这是我的database.yml文件:

 default: &default adapter: postgresql pool: 5 user: pguser password: pguser timeout: 5000 host: localhost encoding: utf8 port: 5432 production: <<: *default database: myapp_production 

我正在试图用这个Dockerfilebuild立图像:

 # Use phusion/passenger-full as base image. To make your builds reproducible, make # sure you lock down to a specific version, not to `latest`! # See https://github.com/phusion/passenger-docker/blob/master/Changelog.md for # a list of version numbers. FROM phusion/passenger-full:0.9.18 # Set correct environment variables. ENV HOME /root # Use baseimage-docker's init process. CMD ["/sbin/my_init"] # ...put your own build instructions here... RUN rm -f /etc/service/nginx/down # Expose Nginx HTTP service EXPOSE 80 # Remove the default site RUN rm /etc/nginx/sites-enabled/default # Add the nginx site and config ADD myapp.conf /etc/nginx/sites-enabled/myapp.conf ADD rails-env.conf /etc/nginx/main.d/rails-env.conf ###### Andrea Grandi https://github.com/andreagrandi/postgresql-docker/blob/master/Dockerfile ###### # Add the PostgreSQL PGP key to verify their Debian packages. # It should be the same key as https://www.postgresql.org/media/keys/ACCC4CF8.asc RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 # Add PostgreSQL's repository. It contains the most recent stable release # of PostgreSQL, ``9.3``. RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list # Update the Ubuntu and PostgreSQL repository indexes and install ``python-software-properties``, # ``software-properties-common`` and PostgreSQL 9.3 # There are some warnings (in red) that show up during the build. You can hide # them by prefixing each apt-get statement with DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get -y -q install python-software-properties software-properties-common \ && apt-get -y -q install postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 USER postgres RUN /etc/init.d/postgresql start \ && psql --command "CREATE USER pguser WITH SUPERUSER PASSWORD 'pguser';" \ && createdb -O pguser myapp_production USER root # Adjust PostgreSQL configuration so that remote connections to the # database are possible. RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf # And add ``listen_addresses`` to ``/etc/postgresql/9.3/main/postgresql.conf`` RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf # Expose the PostgreSQL port EXPOSE 5432 RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql # Add VOLUMEs to allow backup of config, logs and databases VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] USER postgres # Set the default command to run when starting the container CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] ###### /Andrea Grandi https://github.com/andreagrandi/postgresql-docker/blob/master/Dockerfile ###### USER root # Add the Rails app RUN mkdir /home/app/MyApp WORKDIR /home/app/MyApp ADD . /home/app/MyApp RUN chown -R app:app /home/app/MyApp # Install bundle of gems RUN apt-get install pkg-config RUN apt-get install libgmp-dev RUN bundle config build.nokogiri --use-system-libraries RUN bundle install # run migrations RUN RAILS_ENV=production rake db:migrate --trace RUN rake db:seed #enable memcached #RUN rm -f /etc/service/memcached/down # Clean up APT when done. RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

然后,当我运行docker run . 在我的应用程序目录中,我得到以下错误:

无法连接到服务器:连接被拒绝服务器是否运行在主机“localhost”(127.0.0.1)上并接受端口5432上的TCP / IP连接?