如何解决Dockefile未在端口上运行
我有这个python文件:
#!/usr/bin/python
import tornado.web
import tornado.ioloop
class RequestHandler(tornado.web.RequestHandler):
def initialize(self):
with open("Desktop/ControlCode/BI.yaml") as f:
self.write(f.read())
class TEST(RequestHandler):
def get(self):
self.write("hahah")
class ONE(RequestHandler):
async def post(self):
self.write("hoo")
if __name__ == "__main__":
app = tornado.web.Application([
(r"/",TEST),(r"/one",ONE)
])
app.listen(8888)
print("I'm listening on port 8888")
tornado.ioloop.IOLoop.current().start()
这个dockerfile:
FROM python:3
ADD test.py /
RUN pip3 install tornado
EXPOSE 8888
CMD ["python","./test.py"]
当我运行docker run -it -d -p 8888:8888 52c097beb9b4
时,会创建一个图像,但是当我访问localhost:8888/
时,它并没有连接。
注意:如果我移除with open(file)
,则它可以正常工作。知道我能做什么吗?
解决方法
Docker容器内的脚本无权访问主机上的Desktop/ControlCode/BI.yaml
,因此我假设an OSError
is raised是因为找不到该文件。在构建Dockerfile时复制文件,并尝试从容器中访问它。提防路径...
Dockerfile:
FROM python:3
ADD test.py /
COPY Desktop/ControlCode/BI.yaml /
...
从您的脚本中
class RequestHandler(tornado.web.RequestHandler):
def initialize(self):
with open("/BI.yaml") as f:
self.write(f.read())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。