无法从Docker中的主机访问webapp

时间:2017-08-23 13:55:01

标签: docker dockerfile

我有一个简单的webproject,我想“Dockerize”,但我一直未能将webapp暴露给主机。 我的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目录:

paster create --template=pylons web

最后是start_server.sh:

#!/bin/bash

paster serve --daemon development.ini start

现在我可以使用:

构建
docker build -t webapp .

然后运行命令:

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

然后在我运行的docker容器内:

bash start_server.sh

成功启动端口5000上的webapp,如果我在docker容器内卷曲,我得到预期的响应。此外,容器已启动并运行正确的端口映射:

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

现在,如果我运行docker port app,它看起来很好:

5000/tcp -> 0.0.0.0:5000

但是我无法从主机服务器获得任何响应:

curl localhost:5000

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

1 个答案:

答案 0 :(得分:0)

在您的dockerfile中,您需要添加EXPOSE 5000您的端口映射是正确的,将其视为打开容器上的端口,然后使用-p

将其映射到localhost

在评论中回答

  

当make_server绑定到0.0.0.0而不是localhost