无法从Docker中的主机访问Web应用程序

我有一个简单的web项目,我想“Dockerize”,但我一直在暴露Web应用程序主机失败。 我的Dockerfile看起来像:

FROM debian:jessie RUN apt-get update -y && \ apt-get install -y python-pip python-dev curl && \ pip install --upgrade pip setuptools COPY ./requirements.txt /app/requirements.txt WORKDIR /app RUN pip install -r requirements.txt COPY . /app WORKDIR /app/web 

而requirements.txt看起来像:

 PasteScript==2.0.2 Pylons==1.0.2 

Web目录是使用以下命令构build的:

 paster create --template=pylons web 

最后start_server.sh:

 #!/bin/bash paster serve --daemon development.ini start 

现在我可以用以下方式构build:

 docker build -t webapp . 

然后运行命令:

 docker run -it -p 5000:5000 --name app webapp:latest /bin/bash 

然后在Docker容器中运行:

 bash start_server.sh 

它成功地启动端口5000上的webapp,如果我在docker容器内curl,我得到预期的响应。 容器也启动并运行正确的端口映射:

 bc6511d584ae webapp:latest "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp app 

现在,如果我运行docker端口应用程序它看起来很好:

 5000/tcp -> 0.0.0.0:5000 

但是我不能从主机的服务器得到任何回应:

 curl localhost:5000 

我可能在这里误解了一些东西,但对我来说似乎很好。

在你的dockerfile中,你需要添加EXPOSE 5000你的端口映射是正确的,把它想象成打开你的容器的端口,然后用-p

在评论中回答

当你make_server绑定到0.0.0.0而不是localhost