Nginx不为我的Flask网站提供服务

Nginx不为我的Flask网站提供服务,第1张

Nginx不为我的Flask网站提供服务

退后一步,单独运行Flask应用。

您有一些语法错误。

from flask import Flask, render_templateapp=Flask(__name__)@app.route('/')def home():   # Remove double brackets    return render_template('home.html')  # The templates folder is already picked upif __name__=="__main__":    app.run(host="0.0.0.0", port=5000)

然后放在一个Docker容器中,不带q

FROM python:3.5RUN mkdir /mainwebCOPY . /mainwebWORKDIR /mainwebRUN pip install -r requirements.txtEXPOSE 5000CMD ["python3","/mainweb/app.py"]

并运行它,看看它是否有效。

cd mainappdocker build -t flask:test .docker run --rm -p 5000:5000 flask:test

开启http:// server:5000

然后从docker-compose仅使用该容器开始,并根据需要定义nginx。

nginx / Dockerfile

FROM nginx:1.13.1-alpineADD flask.conf /etc/nginx/conf.d/EXPOSE 8080

nginx / flask.conf(我根据项目中的文件进行了更改)

server {    listen 8080;    # This is the port to EXPOSE in nginx container    server_name app;  # You can change this, but not necessary    charset utf-8;    location ^~ /static/ {        alias /usr/share/nginx/html/;     }    location / {        try_files $uri $uri/ @flask;    }    location @flask {        proxy_pass http://app:5000;   # This is the port Flask container EXPOSE'd        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X_Forwared-For $proxy_add_x_forwarded_for;    }}

最后,撰写。您不想让您的网站同时暴露5000和80(您不希望人们绕过Nginx),所以不要暴露5000

version: '2'services:    app:        restart: always        build: ./mainweb        networks: - mainnet    nginx:        restart: always        build: ./nginx        networks: - mainnet        links: - app        volumes: - ./mainweb/static:/usr/share/nginx/html        ports: - "80:8080"networks:    mainnet:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5663405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存