我有一个sinatra API服务器,可以在本地要在容器中运行的端口9292上成功运行。
我使用以下代码创建一个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
构建完镜像后,我运行以下命令来旋转容器:
docker run -it -p 9292:9292 --rm api-server
我确认该应用已启动并正在运行,并提供了其他详细信息:
Listening on localhost:9292, CTRL+C to stop
尽管如此,我无法从服务器返回任何结果。关于为什么我无法访问该容器的任何想法?我正在使用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
关于ruby - 在Docker容器中访问Sinatra应用程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689554/