【发布时间】:2017-01-12 13:37:12
【问题描述】:
使用重新创建设置所需的所有文件更新帖子。 – 还是同样的问题。无法访问容器中运行的服务。
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
docker-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 应用程序?
【问题讨论】:
-
不,您的端口已正确公开且映射良好。这应该足够了。如果您在尝试 curl 时可以从 python exec 打印某些内容,您应该会看到它的响应。你在当地尝试什么卷曲?
-
我以前也遇到过类似的问题。尝试在容器内使用
wget而不是curl。 -
curl -v会给你更多的输出吗?也许这是来自外部的代理/DNS问题?那就试试curl -v --noproxy 127.0.0.1吧。 -
@Ben 这就是我建议
wget的原因,它可以很容易地检测它是否是代理问题。 -
@Ben, curl -v 返回: curl -v localhost:5000
* Rebuilt URL to: localhost:5000/ * Trying ::1... * Connected to localhost (::1) port 5000 (#0) > GET / HTTP/1.1 > Host: localhost:5000 > User-Agent: curl/7.43.0 > Accept: */* > * Empty reply from server * Connection #0 to host localhost left intact curl: (52) Empty reply from server
标签: docker docker-compose dockerfile