退后一步,单独运行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:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)