我正在建造和运行这个码头集装箱。它正在运行一个简单的flask服务器。但当我跑的时候,它马上就离开了。
这是我的Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8080
# CMD ["python3", "-m", "http.server", "8080"]
CMD ["python3", "./py_server.py"]这是py_server.py
from flask import Flask
app = Flask(__name__)
PORT = 8080
@app.route('/')
def hello_world():
return "Hello World"
if __name__ == '__main__':
app.run(PORT)这是我分别构建和运行容器的方式。
构建:
docker build -t banuka/python-venv .run:
docker run -dit -p 8080:8080 --name server1 banuka/python-venv:latest有人能告诉我我做错了什么吗?
发布于 2020-04-13 09:53:22
你的水瓶代码中有个bug。您正在尝试以错误的方式配置Flask端口。这将抛出您正在经历的错误:
AttributeError:'int‘对象没有属性'startswith’
您应该使用以下方式配置您的烧瓶服务器端口
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World"
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8080)文档:https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.run
编辑:添加了主机=‘0.0.0.0’,这样您就可以远程访问您的Flask。
发布于 2020-04-13 09:38:20
有几个问题:
你想要的是-dit,而不是
docker run -it -p 8080:8080 --name server1 banuka/python-venv:latestapp.run() function,以便将其解释为第一个host参数,而不是您想要的,后者是port参数。您想要的是:app.run(port=8080)host='0.0.0.0',因此我们需要app.run(host='0.0.0.0',port=8080)发布于 2020-04-13 09:45:20
你可能是在运行完成后退出的程序?如果您运行py脚本并完成它,那么您的容器将关闭.尝试使用while(true) //and then your code
https://stackoverflow.com/questions/61184956
复制相似问题