微信网站游戏,ai智能ppt制作,重庆最好的网站建设,酒店网站源码主博客目录#xff1a;《从零开始学习搭建量化平台笔记》 主项目计划需要搭建一个 Flask Redis Nginx环境 来制作一个可视化的网站#xff0c;为了避免搭完就忘#xff0c;因此就有了这个博客。 任务#xff1a;搭建一个内网通信且只有由Nginx代理发放的网页端显示环境。… 主博客目录《从零开始学习搭建量化平台笔记》 主项目计划需要搭建一个 Flask Redis Nginx环境 来制作一个可视化的网站为了避免搭完就忘因此就有了这个博客。 任务搭建一个内网通信且只有由Nginx代理发放的网页端显示环境。
默认已经安装好了 Docker 与 docker-compose。若未安装可点击链接。拉取 Flask, Redis, Nginx 所需镜像
# 拉取 Flask 依赖镜像 Python
sudo docker pull python# 拉取 Redis
sudo docker pull redis# 拉取 Nginx
sudo docker pull nginx生成Flask 初始化所需文件与文件夹
mkdir code
touch requirements.txt
touch code/runserver.py
touch Dockerfilerequirements.txt 内写需要依赖的库:
# 环境依赖包
redis
flask
gevent# SQL 依赖包
flask-sqlalchemy
pymysql
cryptography编写 Flask 运行脚本 code/runserver.py 此脚本使用pywsgi代理import time
from gevent import pywsgi
from flask import Flaskapp Flask(__name__)# 编写网页 主页与home
app.route(/)
app.route(/home)
def home():return Hello World\n# 运行模式为发布模式
server pywsgi.WSGIServer((0.0.0.0, 5000), app)
server.serve_forever()# 此为开发模式
# app.run(debugTrue, host0.0.0.0, port5000)编写 Flask 部署 Dockerfile 文件
# 使用 Python 最新版本镜像作为基础镜像
FROM python# 设置工作目录
COPY ./code /code
WORKDIR /code# 设置默认开始脚本
ENV FLASK_APPrunserver.py
ENV FLASK_RUN_HOST0.0.0.0
EXPOSE 5000# 安装依赖 加速使用清华源
RUN python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/# 默认运行命令
CMD [flask, run]生成 Nginx 初始化所需文件与文件夹
# 创建文件夹
mkdir cert html logs www
# 赋予权限
chmod 777 -R cert html logs www
# 生成配置文件
touch nginx.confNginx 配置文件 nginx.conf:
worker_processes 1;
events {worker_connections 1024;
}
http {include /etc/nginx/mime.types;server {listen 80;server_name localhost;location / {# 代理内网proxy_pass http://171.171.0.12:5000;proxy_redirect off;proxy_set_header Host $host:80;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;## 如果是静态网站这么写#root /usr/share/nginx/html;#index index.html index.htm;}}access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;
}创建网桥 bridge内网桥接各个dockers并指定网关
# 列出已有docker网络
sudo docker network ls
# 添加网桥 名称 my-bridge 网关 171.171.0.1 掩码 171.171.0.0/24
sudo docker network create --driver bridge --subnet171.171.0.0/24 --gateway 171.171.0.1 my-bridge# 查看是否添加成功
sudo docker network ls
# 查看细节
sudo docker network inspect my-bridge编写 docker-compose.yml, 需注意缩进。
version: 3networks:my-bridge:external: trueservices:nginx:image: nginxcontainer_name: nginxports:- 80:80volumes:- /Nginx/html:/usr/share/nginx/html- /Nginx/www:/var/www- /Nginx/logs:/var/log/nginx# 有可能会出现不能挂载这个时候用手动拷贝配置文件就行- /Nginx/nginx.conf/:/etc/nginx/nginx.conf- /Nginx/cert:/etc/nginx/cert- /Nginx/conf.d:/etc/nginx/conf.dprivileged: trueenvironment:- NGINX_PORT80- TZAsia/Shanghairestart: alwayslogging:driver: json-fileoptions:max-size: 20m # 单个文件大小为20mmax-file: 2 # 最多2个文件networks:my-bridge:ipv4_address: 171.171.0.2redis:image: rediscontainer_name: redisvolumes:- redis-data:/dataenvironment:- TZAsia/Shanghairestart: alwayslogging:driver: json-fileoptions:max-size: 20m # 单个文件大小为20mmax-file: 2 # 最多2个文件networks:my-bridge:ipv4_address: 171.171.0.3flask:build: /Flaskcontainer_name: flaskports:- 5000:5000volumes:- /Flask/code:/code- /Flask/logs:/logsenvironment:- TZAsia/Shanghaidepends_on:- redisrestart: alwayslogging:driver: json-fileoptions:max-size: 20m # 单个文件大小为20mmax-file: 2 # 最多2个文件networks:my-bridge:ipv4_address: 171.171.0.12volumes:redis-data:driver: local至此开放服务器防护墙 80 端口外网即可访问网页并显示 Hello World。