我已经用下面的docker文件构建了一个码头映像。
# gunicorn-flask
FROM devdb/kibana
MAINTAINER John Doe <user.name@gmail.com>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get install -y python python-pip python-virtualenv gunicorn
# Setup flask application
RUN mkdir -p /deploy/app
COPY gunicorn_config.py /deploy/gunicorn_config.py
COPY app /deploy/app
RUN pip install -r /deploy/app/requirements.txt
WORKDIR /deploy/app
EXPOSE 5000 5601 9200
# Start gunicorn
CMD ["/usr/bin/gunicorn", "--config", "/deploy/gunicorn_config.py", "listener:app"]我正在从这个Docker文件创建的映像中运行容器,如下所示。
sudo docker run -p 5601:5601 -p 9200:9200 -p 5000:5000 -v /home/Workspace/xits/config/elasticsearch.yml:/opt/elasticsearch/config/elasticsearch.yml -v /home/Workspace/xits/config/kibana.yml:/opt/kibana/config/kibana.yml es-kibana-gunicorn:latest我面临的问题是,我无法在我的主机上访问Kibana端口5601。我的浏览器页面上写着ERR_CONNECTION_REFUSED
不过,我可以访问5000端口。
我不明白为什么会非常感谢is.Any的帮助。
发布于 2015-06-22 23:21:55
当码头容器启动时,父Dockerfile devdb/kibana使用脚本启动kibana和elasticsearch。请参阅CMD ["/sbin/my_init"]和剧本本身。
当您在自己的Dockerfile中使用CMD指令时,您将重写来自父Dockerfile的指令。因为你的CMD只启动火鸟,elasticsearch和kibana将永远不会启动。这就是为什么在各自的网络端口上没有响应的原因。
您继承的Docker映像是从击打/基象继承的,它有自己的方法使多个进程在Docker容器中运行。我建议您按照自述文件中的使用说明来学习如何将您的gunicorn添加到要启动的服务列表中。基本上,您必须定义一个名为run的脚本,并将其添加到/etc/service/<service name>/目录中的停靠者映像中。
在Dockerfile中添加:
COPY run /etc/service/gunicorn/run脚本应该类似于:
#!/bin/bash
cd /deploy/app
/usr/bin/gunicorn --config /deploy/gunicorn_config.py listener:apphttps://stackoverflow.com/questions/30991122
复制相似问题