首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头集装箱启动后退出

码头集装箱启动后退出
EN

Stack Overflow用户
提问于 2020-04-13 09:31:25
回答 3查看 1.8K关注 0票数 0

我正在建造和运行这个码头集装箱。它正在运行一个简单的flask服务器。但当我跑的时候,它马上就离开了。

这是我的Dockerfile

代码语言:javascript
复制
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

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)

PORT = 8080

@app.route('/')
def hello_world():
    return "Hello World"

if __name__ == '__main__':
   app.run(PORT)

这是我分别构建和运行容器的方式。

构建:

代码语言:javascript
复制
docker build -t banuka/python-venv .

run:

代码语言:javascript
复制
docker run -dit -p 8080:8080 --name server1 banuka/python-venv:latest

有人能告诉我我做错了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-13 09:53:22

你的水瓶代码中有个bug。您正在尝试以错误的方式配置Flask端口。这将抛出您正在经历的错误:

AttributeError:'int‘对象没有属性'startswith’

您应该使用以下方式配置您的烧瓶服务器端口

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2020-04-13 09:38:20

有几个问题:

你想要的是-dit,而不是

代码语言:javascript
复制
docker run -it -p 8080:8080 --name server1 banuka/python-venv:latest

  1. --您将端口作为变量传递给the app.run() function,以便将其解释为第一个host参数,而不是您想要的,后者是port参数。您想要的是:app.run(port=8080)
  2. As @Alexandre指出,如果您远程访问主机,则需要显式地将其绑定到host='0.0.0.0',因此我们需要app.run(host='0.0.0.0',port=8080)
票数 2
EN

Stack Overflow用户

发布于 2020-04-13 09:45:20

你可能是在运行完成后退出的程序?如果您运行py脚本并完成它,那么您的容器将关闭.尝试使用while(true) //and then your code

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61184956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档