端口上的 Dockerfile 不 运行
Dockefile Not running on port
我有这个 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,因为找不到该文件。在构建 Docker 文件时复制该文件,并尝试从容器内访问它。不过要注意路径...
Docker文件:
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())
我有这个 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,因为找不到该文件。在构建 Docker 文件时复制该文件,并尝试从容器内访问它。不过要注意路径...
Docker文件:
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())