使用重新创建设置所需的所有文件更新帖子。 - 仍然是同样的问题。无法访问在容器中运行的服务。
FROM python:3
RUN apt-get update
RUN apt-get install -y ruby rubygems
RUN gem install sinatra
WORKDIR /app
ADD . /app/
EXPOSE 4567
CMD ruby hei.rb -p 4567
hei.rb
require 'sinatra'
get '/' do
'Hello world!'
end
搬运工-compose.yml
version: '2'
services:
web:
build: .
ports:
- "4567:4567"
我通过运行docker-compose up --build .
开始派对
docker ps 返回:
0.0.0.0:4567->4567/tcp
仍然没有来自端口4567的响应。使用来自主机的curl进行测试。
$ curl 127.0.0.1:4567 # and 0.0.0.0:4567
localhost:4567在容器内回复
$ docker-compose exec web curl localhost:4567
Hello world!%`
如何才能访问在端口4567上运行的Sinatra应用程序?
答案 0 :(得分:2)
Sinatra绑定到错误的界面。
通过添加CMD ruby hei.rb -p 4567 -o 0.0.0.0
开关来修复。
{{1}}
答案 1 :(得分:0)
如果没有为环境变量APP_ENV分配任何值(通过(ENV ['APP_ENV']),则默认环境为“ :development ”
在启用了运行设置的开发环境中,默认情况下,sinatra绑定到运行计算机的localhost接口。
为了使此服务在此网络之外可用,它需要在运行环境中的所有接口上进行侦听。您可以通过将默认绑定地址更新为“ 0.0.0.0”来实现此目的
FROM ruby:latest
WORKDIR /usr/src/app/
ADD . /usr/src/app/
RUN bundle install
EXPOSE 4567
CMD ["ruby","app.rb","-o", "0.0.0.0"]