我已经设置了一个docker ubuntu 14.04图像,我正在使用以下命令运行它:
docker run -d -p 5000:5000 ari/python3-flask
Dockerfile:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y python3 python3-pip
ADD . /var/my_app
RUN pip3 install -r /var/my_app/requirements.txt
EXPOSE 5000
CMD ["python3", "/var/my_app/runserver.py"]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试卷曲地址(localhost:5000)或在浏览器中访问它,我会收到连接失败错误.
容器的docker日志显示:
Running on http://127.0.0.1:5000/
Restarting with reloader
Run Code Online (Sandbox Code Playgroud)
我的docker设置和/或配置有什么问题或者可能有什么问题?谢谢.
我正在尝试在docker容器中运行Python Flask Web服务器,但我无法从外部连接到Flask服务器.
我做了什么:
我建立 /temp/HelloFlask.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
我启动了docker容器,容器端口5000映射到主机端口5000,并且〜/ temp安装到/ temp
docker run -it -p 5000:5000 -v ~/temp:/temp --name tf gcr.io/tensorflow/tensorflow:latest-devel
Run Code Online (Sandbox Code Playgroud)
在运行的docker容器内,我安装了Flask并运行 HelloFlask.py
cd /temp
pip install Flask
python HelloFlask.py &
Run Code Online (Sandbox Code Playgroud)
我验证了服务器在容器中是可访问的
[root@de8b6996b540:/temp# curl localhost:5000
127.0.0.1 - - [22/Sep/2016 17:41:48] "GET / HTTP/1.1" 200 -
Hello World!
Run Code Online (Sandbox Code Playgroud)
我正在使用Docker版本1.12.1(版本:12133),它暴露了localhost上的容器端口,因此我应该可以localhost:5000
在我的Mac 上访问容器外部,但我无法连接.
我测试确保Docker通过运行ngetx容器正确地将容器端口绑定到localhost,如docker for mac quickstart中所述,我可以通过localhost从容器访问端口就好了.
我有一个带有 SSL 授权的烧瓶应用程序。这是我的run.py:
#!flask/bin/python
from app import app
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.load_cert_chain('sertnew/se-emulator.crt', 'sertnew/se-emulator.key')
app.run(debug=True, host='127.0.0.1', port=5000, ssl_context=ctx)
Run Code Online (Sandbox Code Playgroud)
在我的机器上,我简单地运行它
python run.py
然后我在 chrome 中打开https://localhost:5000并且它可以工作(有一条非安全连接的消息,但对我来说没问题)
现在我试图让它在 Docker 容器中工作。我有一个这样的 Dockerfile:
FROM python:3.5-slim
RUN apt-get update && apt-get install -y python3-pip
COPY . /storage-emulator
WORKDIR /storage-emulator
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["run.py"]
Run Code Online (Sandbox Code Playgroud)
并尝试以不同的方式运行它。我可以看到“在https://127.0.0.1:5000/ 上运行(按 CTRL+C 退出)”消息,但无法在浏览器中打开页面。我究竟做错了什么?
我想在 Docker 中运行一个 Flask 应用程序,使用 Flask 简单的 http 服务器。(不是枪炮)
我遇到了主机设置问题。
在flask app.py中,它应该可以作为官方教程使用,但它不起作用:
if __name__ == '__main__':
app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)
所以我在回答类似帖子后做了它,它突然起作用了!:
$> flask run --host=0.0.0.0
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么第一种方法不起作用,但第二种方法有效?
我正在尝试将一个简单的 Flask 应用程序移动到 docker,但我无法弄清楚为什么无法从浏览器访问该应用程序。
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
environment:
FLASK_APP: api
FLASK_ENV: development
redis:
image: "redis:alpine"
Run Code Online (Sandbox Code Playgroud)
FROM python:3.7
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["flask", "run"]
Run Code Online (Sandbox Code Playgroud)
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
...
return app
Run Code Online (Sandbox Code Playgroud)
web_1 | * Serving Flask app "api" (lazy loading)
web_1 | * Environment: development
web_1 | * Debug mode: on
web_1 | * Running …
Run Code Online (Sandbox Code Playgroud) 我无法向docker容器中的flask应用请求。它没有响应。
有我的烧瓶应用程序文件:
import json
from flask import Flask, jsonify
from flask import request
from trained_model import predict
app = Flask(__name__)
@app.route("/", methods=['POST'])
def main():
res = []
for obj in request.json:
item = str(obj['item'])
print item
predicted = predict(item)
print predicted
res.append({'item': item, 'correct': predicted})
return json.dumps({'results': res})
if __name__ == "__main__":
app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)
有我的dockerfile:
FROM tensorflow/tensorflow
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Bundle app source
COPY . /usr/src/app
RUN sh docker_install.sh
EXPOSE 5000
ENTRYPOINT ["python"] …
Run Code Online (Sandbox Code Playgroud) 我正在尝试做 http://containertutorials.com/docker-compose/flask-simple-app.html
我已经逐字复制了教程,除了我改变了
From flask import Flask
Run Code Online (Sandbox Code Playgroud)
至
from flask import Flask
Run Code Online (Sandbox Code Playgroud)
我可以很好地建造它.当我从命令行运行docker ps时,我可以启动它并获得以下内容
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
291c8dfe5ddb whatever:latest "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp sick_wozniak
Run Code Online (Sandbox Code Playgroud)
我在OSX上构建它
我尝试了以下内容
因此我确信docker正在工作,并且烧瓶正在彼此独立工作,但我不能让它们一起工作.
我有一个 Flask 应用程序,我将其部署在 EC2 实例上。该应用程序启动得很好:
ubuntu@ip-something:~/webservices$ python service/texting_service.py
* Serving Flask app "texting_service" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 146-396-474
Run Code Online (Sandbox Code Playgroud)
当我ssh
进入此 EC2 实例并使用 调用该服务时localhost
,它会返回预期的响应。但是,当我尝试使用实例的公共 IP 地址从 EC2 实例外部调用此服务时,我看到以下错误:
curl: (7) Failed to connect to …
Run Code Online (Sandbox Code Playgroud) 在 docker 20.10.2(版本 2291f61)中尝试一个简单的python Flask Web 应用程序。
\n执行以下操作:docker build -t hello-world .
开始时没问题(请参见下文),但结束时为:
#6 2.866 After this operation, 305 MB of additional disk space will be used.\n#6 2.866 Do you want to continue? [Y/n] Abort.\n------\nexecutor failed running [/bin/sh -c apt-get install python3-pip]: exit code: 1\n
Run Code Online (Sandbox Code Playgroud)\n我需要以某种方式回答“是”吗?还有其他解决方法吗?
\n编辑1: $ docker build -t Flask-tutorial:latest 。# 做同样的事情。
\n编辑 2:使用 @tentative 的 install -y 想法会更进一步。
\n > [4/6] RUN apt-get install -y flask:\n#7 0.742 Reading …
Run Code Online (Sandbox Code Playgroud) 我想在本地运行一个 dockerized Flask 服务器并访问我在其中定义的任何路由。设置重现我的问题:
应用程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
Run Code Online (Sandbox Code Playgroud)
文件
from python:3.7-alpine
COPY app.py app.py
RUN pip install flask
CMD [ "flask", "run" ]
Run Code Online (Sandbox Code Playgroud)
构建这个容器工作正常。按照文档和一些深入的示例,运行它docker run -p 5000:5000 flask
应该可以解决问题。它启动容器并且看起来不错:
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)
而docker ps
让我发现,端口映射也似乎工作: …
我刚刚开始学习 docker,我正在尝试在容器中运行一个非常简单的 Flask 服务器。每当我运行它时,它都工作得很好。但是,当我访问该网站时,chrome 会显示以下内容:
\nThis page isn\xe2\x80\x99t working\n127.0.0.1 didn\xe2\x80\x99t send any data.\nERR_EMPTY_RESPONSE\n
Run Code Online (Sandbox Code Playgroud)\n这是我的代码:
\nfrom flask import Flask\n\napp = Flask(__name__)\n\n@app.route("/")\ndef index():\n return "Hello World"\n\nif __name__ == "__main__":\n app.run(debug=True)\n
Run Code Online (Sandbox Code Playgroud)\nDocker 文件:
\nFROM python:3\n\nRUN mkdir /test\nWORKDIR /test\nRUN pip3 install flask\n\nCOPY . .\nEXPOSE 5000\n\ncmd ["python3", "application.py"]\n
Run Code Online (Sandbox Code Playgroud)\n以及我用来构建映像和运行容器的命令:
\ndocker build . -t test\ndocker start -p 5000:5000 test\n
Run Code Online (Sandbox Code Playgroud)\n有人可以帮我解决这个问题吗?
\nflask ×11
docker ×10
python ×9
ubuntu ×2
alpine-linux ×1
amazon-ec2 ×1
macos ×1
python-3.x ×1
ssl ×1