Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Can';t从外部访问从命令行启动的停靠应用程序_Ruby_Docker - Fatal编程技术网

Ruby Can';t从外部访问从命令行启动的停靠应用程序

Ruby Can';t从外部访问从命令行启动的停靠应用程序,ruby,docker,Ruby,Docker,我用Ruby和一些宝石构建了一个Docker图像,作为我项目的起点。其网址为:jikkujose/trial。我正在Mac电脑上试用,使用默认的docker工具箱 我正试图用它来主持一个单一的文件应用程序。我将按以下方式启动: docker run-itdP-v.:/app jikkujose/docker 当前目录包含一个包含以下内容的文件app.rb: require 'sinatra' class App < Sinatra::Base set :bind, "0.0.0.0"

我用Ruby和一些宝石构建了一个Docker图像,作为我项目的起点。其网址为:
jikkujose/trial
。我正在Mac电脑上试用,使用默认的docker工具箱

我正试图用它来主持一个单一的文件应用程序。我将按以下方式启动:

docker run-itdP-v.:/app jikkujose/docker

当前目录包含一个包含以下内容的文件
app.rb

require 'sinatra'

class App < Sinatra::Base
  set :bind, "0.0.0.0"

  get '/' do
    'This is interesting :)'
  end
end

App.run!
curl: (7) Failed to connect to 192.168.99.100 port 32780: Connection refused
我正在尝试使用通过
docker machine ip default
获得的ip访问应用程序

尝试使用
curl
访问应用程序时,我得到以下信息:

require 'sinatra'

class App < Sinatra::Base
  set :bind, "0.0.0.0"

  get '/' do
    'This is interesting :)'
  end
end

App.run!
curl: (7) Failed to connect to 192.168.99.100 port 32780: Connection refused
这意味着没有监听器,或者,因为有一个
docker exec curlhttp://localhost:4567
确实有效,侦听器不接受来自广播的查询,只接受来自本地主机的查询

你的:

检查其他人是否打算启动sinatra应用程序,以便更好地与docker环境配合使用:例如“”(fig是docker compose的旧名称)

在此之前,请检查映射端口是否为:

这意味着没有监听器,或者,因为有一个
docker exec curlhttp://localhost:4567
确实有效,侦听器不接受来自广播的查询,只接受来自本地主机的查询

你的:

检查其他人是否打算启动sinatra应用程序,以便更好地与docker环境配合使用:例如“”(fig是docker compose的旧名称)

在此之前,请检查映射端口是否为:



请确定,
docker机器ip默认值的输出是什么?请同时提供您的
docker文件,因为它在docker hub上不可用。@michaelbahr我没有使用docker文件构建它。我使用提交构建。IP也是一样的:
192.168.99.100
问题是因为容器启动时没有服务器运行吗?在容器运行时,如果执行
docker exec curl,会发生什么情况http://localhost:4567
可以肯定的是,
docker机器ip默认值的输出是什么?
?请同时提供您的
docker文件
,因为它在docker hub上不可用。@michaelbahr我没有使用docker文件构建它。我使用提交构建。IP也是一样的:
192.168.99.100
问题是因为容器启动时没有服务器运行吗?在容器运行时,如果执行
docker exec curl,会发生什么情况http://localhost:4567
我已经这样做了;我在公开的端口上做了一个
curl
,也使用
VM
@JikkuJose的
IP
访问,我的观点是,当你使用-P时,你不知道实际使用的是哪个端口:docker ps-a返回什么?我知道,我已经提供了docker ps-a的输出,我正在使用随机选择的端口:
32780
。(您可以滚动问题附带的输出以查看它)@JikkuJose Right。我重写了答案,提出了一个替代方案。我没有使用
Dockerfile
构建它。谢谢你的链接,我之前已经看过了。我的目标不是运行Sinatra;它只是访问一个公开的端口,并在通过命令行启动的容器中运行服务器,而不是
Dockerfile
;我在公开的端口上做了一个
curl
,也使用
VM
@JikkuJose的
IP
访问,我的观点是,当你使用-P时,你不知道实际使用的是哪个端口:docker ps-a返回什么?我知道,我已经提供了docker ps-a的输出,我正在使用随机选择的端口:
32780
。(您可以滚动问题附带的输出以查看它)@JikkuJose Right。我重写了答案,提出了一个替代方案。我没有使用
Dockerfile
构建它。谢谢你的链接,我之前已经看过了。我的目标不是运行Sinatra;只需访问一个公开的端口并在通过命令行启动的容器中运行服务器,而不是
Dockerfile
ENTRYPOINT ["/opt/rubies/ruby-2.2.2/bin/ruby"]
CMD ["/app/app.rb"]
VBoxManage controlvm boot2docker-vm natpf1 "name,tcp,127.0.0.1,32780,,32780"