我有一个简单的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
我可能在这里误解了一些东西,但对我来说似乎很好。
答案 0 :(得分:0)
在您的dockerfile中,您需要添加EXPOSE 5000
您的端口映射是正确的,将其视为打开容器上的端口,然后使用-p
在评论中回答
当make_server绑定到0.0.0.0而不是localhost
时