如何在Ubuntu中通过localhost:9292绑定docker容器和cuba进程 14

How to bind the docker container and the cuba process through localhost:9292 in Ubuntu 14

我在 ubuntu 14.04,我有一个超级简单的 Cuba 应用程序,它似乎缺少一些东西:

Gemfile:

source "https://rubygems.org"
gem 'cuba'

config.ru

require "./hello_world"
run Cuba

docker-compose.yml

web:
  build: .
  volumes:
    - .:/myapp
  ports:
    - "9292:9292"
  command: bundle exec rackup -p 9292

Dockerfile

FROM jruby:1.7.19

RUN mkdir /myapp
WORKDIR /myapp
ADD . /myapp

RUN bundle install

我已经尝试 运行 它通过 docker-compose up。它构建了图像并在终端中绑定了 cuba 进程。我可以看到服务器正在侦听端口 9292。但是我完全无法通过 localhost:9292 url.

访问它

似乎默认情况下主机未绑定到 docker 守护程序 ip。更改 docker-compose.yml 并添加 rackup 选项修复它。

web:
  build: .
  volumes:
    - .:/myapp
  ports:
    - "9292:9292"
  command: bundle exec rackup -o 0.0.0.0