无法从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