在Docker容器中访问Sinatra应用程序的问题

我有一个sinatra API服务器,我可以成功运行本地端口9292我想在一个容器中运行。

我用以下创build一个Dockerfile:

FROM ruby:2.2.0 RUN apt-get update -qq && \ apt-get install -y build-essential libpq-dev nodejs --no-install-recommends && \ rm -rf /var/lib/apt/lists/* && \ mkdir /myapp WORKDIR /myapp ADD . /myapp RUN bundle install EXPOSE 9292 CMD bundle exec rackup config.ru 

在构build映像后,我运行以下命令启动容器: docker run -it -p 9292:9292 --rm api-server

我确认该应用程序已启动并正在运行,并提供了其他详细信息:

Listening on localhost:9292, CTRL+C to stop

尽pipe如此,我无法从服务器返回任何结果。 任何想法,为什么我不能访问容器? 我使用Docker 1.9.1运行Ubuntu 15.10

我能够通过在我的瘦服务器上将主机指定为0.0.0.0来解决此问题。 我的Dockerfile命令现在读取如下: CMD bundle exec rackup -o 0.0.0.0 -p 9292 config.ru