当前位置: 首页 > news >正文

docker+mysql+flask+redis+vue3+uwsgi+docker部署

首先拉取mysql的镜像,这里用的mysql5.7.6

docker pull mysql:5.7.6

镜像拉取完成后启动:

docker run --name my-mysql -d -p 3306:3306 -v /usr/local/my-mysql/conf:/etc/mysql/conf.d -v /usr/local/my-mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7.6

利用dockerfile构建python3.9.11+uwsgi+nginx

FROM python:3.9.11# 为镜像添加标签
LABEL version="v1" description="Docker deploy Flask" by="guochunbiao"
RUN mkdir /opt/flask_app
COPY ./bask_flask /opt/flask_app/bask_flask
COPY ./dist /opt/flask_app/dist
COPY ./site-pages /usr/local/lib/python3.9/site-packages
COPY ./nginx.conf /etc/nginx/nginx.conf
# 配置工作目录
WORKDIR /opt/flask_app# 在镜像容器中执行命令
RUN pip install Flask && pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple/
#RUN pip install Flask && pip install -r request.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/#安装nginx
apt-get update
apt-get install nginx
apt-get install vim

构建:

docker build -t mydemo .

flask配置:

#基本项目创建
pip freeze > requirements.txt

安装:pip install -r requirements.txt

#安装flask-sqlalchey flask-migrate mysql数据库
pip install flask-sqlalchemy flask-migrate
#安装 flask-cors解决跨域访问
pip install flask-cors数据库迁移创建迁移数据库 flask db init生成迁移脚本 flask db migrate -m "add user tables"将迁移脚本应用到数据库中 flask db upgrade 这个执行前确保,alembic_version的标号是最新的,不是手动更新在migrations->versions目录下将迁移脚本回滚 flask db downgrade

celery:

启动redis celery -A auto.celery worker -l info -P eventlet

微信支付python的库

pip3.9 install wechatpayv3==1.2.35 -i https://pypi.tuna.tsinghua.edu.cn/simple/

--link redis:redis-server flask容器就可以读取redis容器redis服务了:

docker pull redis:5.0.3

docker run --name redis -d redis:5.0.3 redis-server --appendonly yes

说明:

  1. 使用Docker运行一个名为"redis"的容器。
  2. 使用"redis:5.0.3"这个Docker镜像来创建这个容器。这个镜像是Redis数据库的一个版本。
  3. "-d"参数表示容器将在"detached"模式下运行,也就是说这个容器将在后台运行。
  4. "redis-server --appendonly yes"是传递给容器的命令,它将启动一个Redis服务器并开启append-only模式。这个模式会把所有的修改操作都记录下来,以便在数据库重启后可以通过这些记录恢复数据。
docker run --name flask -p 5000:5000 -p 3000:3000  --link redis:redis-server -itd auto_flask_nginx_v1.0:v1.0

说明:

  1. 使用 Docker 运行一个名为 "flask" 的容器。
  2. 使用 "auto_flask_nginx_v1.0:v1.0" 这个 Docker 镜像来创建这个容器。
  3. "-p 5000:5000" 和 "-p 3000:3000" 参数将容器内的端口 5000 和 3000 分别映射到主机的端口 5000 和 3000,这样你就可以通过主机的这两个端口来访问容器内的服务了。
  4. "--link redis:redis-server" 参数将链接名为 "redis" 的容器到 "flask" 容器,并在 "flask" 容器中用 "redis-server" 这个名字来引用 "redis" 容器。这样,"flask" 容器就可以通过 "redis-server" 这个名字来访问 "redis" 容器提供的服务了。
  5. "-itd" 参数表示容器将在 "detached" 模式下运行,并以交互模式打开一个伪终端。

# 获取access_token用来获取微信用户openid
def secret_token(code, user):redis_conn = redis.Redis(host='redis-server', port=6379)is_key = redis_conn.hget('{}_zc_token'.format(user), 'wx_token')if is_key:return is_keyelse:url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code".format(APP_ID,APP_SECRET, code)response_data = requests.get(url)eval_resp = eval(response_data.content)redis_conn.hset('{}_zc_token'.format(eval_resp.get('openid')), 'wx_token', response_data.content)redis_conn.expire('{}_zc_token'.format(eval_resp.get('openid')), 7100)return response_data.content

参考连接:

http://hk.javashuo.com/article/p-kgdqsqip-bv.html

uwsgi.ini配置:

[uwsgi]
#项目目录
chdir=/opt/flask_app
#指定项目的应用,固定写法,承接上面的项目目录
module=auto:app
wsgi-file=/opt/flask_app/auto.py
callable=app
#sock文件存放目录,方便nginx进行sock连接交互
socket=/opt/flask_app/uwsgi_log/uwsgi.sock
#并发进程
workers=5
#进程id存放文件
pidfile=/opt/flask_app/uwsgi_log/uwsgi.pid
#启动的ip及端口
http=0.0.0.0:5000
# 对应app.py文件中Flask对象对应的变量名
callable=auto
#静态文件映射,第一个等于代表Django里面的别名,第二个等于后面是Django里面的真实路径
#static-map=/static=/opt/AutomationPlatform/frontend/static/
#启动的用户和组
uid=root
gid=root
#启用主进程
master=true
#自动移除unixSocket和pid文件当服务停止的时候
vacuum=true
#序列化接受的内容,如果可能的话
thunder-lock=true
#启用线程
enable-threads=true
#设置自中断时间
harakiri=36000
#设置缓存
post-buffering=1024
#日志存放目录,方便拍错
daemonize=/opt/flask_app/uwsgi_log/uwsgi.log

启动:

uwsgi --ini uwsgi.ini

停止:

uwsgi --stop uwsgi_log/uwsgi.pid

部署Vue3到Nginx和设置请求转发需要以下步骤:

  1. 构建Vue3项目:在项目目录下运行npm run build命令。这会生成一个dist目录,里面包含构建后的静态文件。

  2. 部署到Nginx:将dist目录下的所有文件复制到Nginx的web目录下,例如/usr/share/nginx/html/

  3. 配置Nginx转发请求:在Nginx的配置文件中添加一个新的server块。例如:

    server {listen 80;server_name yourdomain.com;location / {root /usr/share/nginx/html; # Vue3项目在Nginx的路径index index.html;try_files $uri $uri/ /index.html; # 用于支持Vue的history模式}location /api {proxy_pass http://backend:3000; # 假设后端服务运行在3000端口}
    }
    

  4. /api路径下的所有请求都会被转发到后端服务。

  5. 重启Nginx:最后,你需要重启Nginx以应用新的配置。在Linux上,你可以使用sudo systemctl restart nginx命令。

相关文章:

docker+mysql+flask+redis+vue3+uwsgi+docker部署

首先拉取mysql的镜像,这里用的mysql5.7.6 docker pull mysql:5.7.6 镜像拉取完成后启动: docker run --name my-mysql -d -p 3306:3306 -v /usr/local/my-mysql/conf:/etc/mysql/conf.d -v /usr/local/my-mysql/data:/var/lib/mysql -e MYSQL_ROOT_PA…...

Spring boot接收zip包并获取其中excel文件的方法

1、问题 工作中遇到一个需求&#xff0c;接收一个zip包&#xff0c;读取其中的excel文件并处理&#xff0c;减少用户多次选择目录和文件的痛点&#xff0c;该zip包包含多级目录 2、依赖 需要用到apache的Workbook类来操作Excel&#xff0c;引入以下依赖 <dependency>&l…...

Ubuntu镜像源cn.arichinve.ubuntu.com不可用原因分析和解决

文章目录 Ubuntu查看系统版本Ubuntu更新系统不能更新Ubuntu查看APT更新源配置cn.archive.ubuntu.com已经自动跳转到清华镜像站Ubuntu变更镜像源地址备份原文件批量在VIM中变更 Ubuntu国内镜像站推荐推荐阅读 今天想要在Ubuntu环境下搭建一个测试环境&#xff0c;进入Ubuntu系统…...

Java基础面试,String,StringBuffer,StringBuilder区别以及使用场景

简单的几句 String是final修饰的&#xff0c;不可变&#xff0c;每次操作都会产生新的对象。StringBuffer和StringBuilder都是在原对象上进行操作StringBuffer是线程安全的&#xff0c;StringBuilder是线程不安全的。StringBuffer方法是被synchronized修饰的 所以在性能方面大…...

基于SpringBoot的高校学科竞赛平台

目录 前言 一、技术栈 二、系统功能介绍 竞赛题库管理 竞赛信息管理 晋级名单管理 往年成绩管理 参赛申请管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步…...

excel如何让线条消失,直接设置网格即可,碰到不方便的地方优先百度,再采取蛮干

怎么将excel表格中的隐形线条去掉...

抖音短视频seo矩阵系统源代码开发系统架构及功能解析

短视频seo源码&#xff0c;短视频seo矩阵系统底层框架上支持了从ai视频混剪&#xff0c;视频批量原创产出&#xff0c;云存储批量视频制作&#xff0c;账号矩阵&#xff0c;视频一键分发&#xff0c;站内实现关键词、短视频批量搜索排名&#xff0c;数据统计分类多功能细节深度…...

在pycharm中弹出图后,需要关闭才会显示Process finished with exit code 0

在pycharm中弹出图后&#xff0c;需要关闭才会显示Process finished with exit code 0 在PyCharm中&#xff0c;当你运行一个Python程序并弹出一个图形窗口时&#xff0c;程序会等到图形窗口关闭后才会显示 “Process finished with exit code 0” 的消息。 这是 由于代码执行…...

【计算机网络笔记六】应用层(三)HTTP 的 Cookie、缓存控制、代理服务、短连接和长连接

HTTP 的 Cookie HTTP 的 Cookie 机制要用到两个字段&#xff1a;响应头字段 Set-Cookie 和请求头字段 Cookie。 Cookie 可以设置多个 key-value 对&#xff0c; 响应头中可以设置多个 Set-Cookie 字段&#xff0c;请求头Cookie后面可以设置多个键值对&#xff0c;用分号隔开&a…...

Vue中的数据分页与分页组件设计

Vue中的数据分页与分页组件设计 在前端开发中&#xff0c;数据分页是一个常见的需求&#xff0c;特别是当处理大量数据时。Vue作为一款流行的JavaScript框架&#xff0c;提供了强大的工具和生态系统来实现数据分页。本文将介绍如何在Vue中进行数据分页&#xff0c;以及如何设计…...

TCP串流场景剖析

在TCP&#xff08;传输控制协议&#xff09;中&#xff0c;串流场景指的是数据通过TCP连接以流&#xff08;stream&#xff09;的方式传输。TCP是一种可靠的、面向连接的传输协议&#xff0c;它将数据切分为多个报文段&#xff0c;通过网络传输&#xff0c;并在接收端进行重组&…...

Windows历史版本下载

1、微PE工具箱&#xff08;非广告本人常用&#xff09; 常用安装Windows系统的微PE工具 地址&#xff1a;https://www.wepe.com.cn/download.html 2、Windows系统下载地址&#xff08;非微软官方&#xff09; 地址&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 下载&…...

企业级磁盘阵列存储系统由硬到软全析

企业级磁盘阵列是由一组设备构成的存储系统,主要包括两种类型的设备,分别是控制器和扩展柜,其中控制器只有一台,扩展柜可以没有,也可以有多台。在EMC的Unity中分别称为DPE(Disk Processor Enclosure)和DAE(Disk Array Enclosure),在华为的OceanStor里面称为控制框和硬…...

V4L2 驱动架构介绍

V4L2 简介 Video for Linux two(Video4Linux2)简称 V4L2&#xff0c;是 V4L 的改进版。V4L2 是 linux操作系统下用于视频和音频数据采集设备的驱动框架&#xff0c;为驱动和应用程序提供了一套统一的接口规范。 在 Linux 下&#xff0c;所有外设都被看成一种特殊的文件&#xf…...

掌握这些技巧,让Excel批量数据清洗变得简单高效!

什么是数据清洗 数据清洗是指在数据处理过程中对原始数据进行筛选、转换和修正&#xff0c;以确保数据的准确性、一致性和完整性的过程。它是数据预处理的一部分&#xff0c;旨在处理和纠正可能存在的错误、缺失值、异常值和不一致性等数据质量问题。 为什么要数据清洗 Exce…...

成都瀚网科技:抖音上线地方方言自动翻译功能

为了让很多方言的地域历史、文化、习俗能够以短视频的形式生产、传播和保存&#xff0c;解决方言难以被更多用户阅读和理解的问题&#xff0c;平台正式上线推出当地方言自动翻译功能。创作者可以利用该功能&#xff0c;将多个方言视频“一键”转换为普通话字幕供大众观看。 具体…...

【k8s】【docker】web项目的部署

yaml配置文件 后端&#xff1a;springboot项目 前端&#xff1a;vue项目&#xff0c;之前镜像封装的nginx.conf反向代理配置直接使用了docker-compose.yml中services的名称&#xff0c;无法代理成功&#xff0c;可修改为127.0.0.1 # 后端 apiVersion: apps/v1 kind: Deployment…...

【视频去噪】基于全变异正则化最小二乘反卷积是最标准的图像处理、视频去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

国庆day3---网络编程知识点脑图整合

...

链表经典面试题(六)

判断链表是否有环 1.题目2.思路分析(文字)3.详细的注释和代码实现 1.题目 2.思路分析(文字) 3.详细的注释和代码实现 public class Solution {public boolean hasCycle(ListNode head) {//定义两个快慢指针ListNode fast head;ListNode slow head;//让快指针走两步,慢指针走…...

SM2签名算法中随机数K的随机性对算法安全的影响

一、构造如下SM2签名算法过程1 Sig1 r1 F2BFC778C66127C74E3613FAA1AB6E207059740B317597A78BBFCDF58AED0A51 Sig1 s1 4FC719D00334CCC23098036DEEAA71DB464A076EFA79283389D3414D70659E88 私钥d B3124DC843BB8BA61F035A7D0938251F5DD4CBFC…...

郁金香2021年游戏辅助技术中级班(六)

郁金香2021年游戏辅助技术中级班&#xff08;六&#xff09; 055-ce,xdbg调试分析接任务交任务完成任务056-C,C写代码测试接任务交任务完成任务我们再来分析一下完成任务 057-C,C写代码测试交任务完成任务 055-ce,xdbg调试分析接任务交任务完成任务 创建一个新角色&#xff0c…...

毛玻璃员工卡片悬停效果

效果展示 页面结构组成 通过效果展示图&#xff0c;我们可以看出页面布局比较常规&#xff0c;最核心的就是卡片&#xff0c;当鼠标没有悬停在卡片上时&#xff0c;文字和头像处于半透明状态&#xff0c;当鼠标悬停在卡片上是&#xff0c;底部会展示社交图标。 CSS 知识点 b…...

闪存工作原理

前言 1、闪存类型 闪存有两种分类&#xff0c;NAND型闪存主要用于存储 2、MOS的特性 MOS管的三个引脚分别是Gate&#xff08;G&#xff09;、Source&#xff08;S&#xff09;和Drain&#xff08;D&#xff09;。Gate&#xff08;G&#xff09;引脚是晶闸管的控制引脚&…...

从0到一配置单节点zookeeper

我的软件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1nImkjOgzPkgaFOuUPwd1Sg?pwd2wqo 提取码&#xff1a;2wqo 视频教程p1-zookeeper安装和配置以及启动服务和检测是否运行成功_哔哩哔哩_bilibili 一、安装zookeeper http://zookeeper.apache.org/releases.h…...

【JVM】第三篇 JVM对象创建与内存分配机制深度剖析

目录 一. JVM对象创建过程详解1. 类加载检查2. 分配内存2.1 如何划分内存?2.2 并发问题3. 初始化4. 设置对象头5. 执行<init>方法二. 对象头和指针压缩详解三. JVM对象内存分配详解四.逃逸分析 & 栈上分配 & 标量替换详解1. 逃逸分析 & 栈上分配2. 标量替换…...

【信创】麒麟v10(arm)-mysql8-mongo-redis-oceanbase

Win10/Win11 借助qume模拟器安装arm64麒麟v10 前言 近两年的国产化进程一直在推进&#xff0c;基于arm架构的国产系统也在积极发展&#xff0c;这里记录一下基于麒麟v10arm版安装常见数据库的方案。 麒麟软件介绍: 银河麒麟高级服务器操作系统V10 - 国产操作系统、银河麒麟、中…...

maven settings.xml文件(包含了配置阿里云镜像)

mac 的 settings.xml 我配置的位置是&#xff1a; /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/settings.xml 然后 local repository 我配置的位置是&#xff1a; /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/repos…...

分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结…...

Redis是否要分库的实践

Redis的分库其实没有带来任何效率上的提升&#xff0c;只是提供了一个命名空间&#xff0c;而这个命名空间可以完全通过key的设计来避开这个问题。 一个优雅的Redis的key的设计如下...

福建网站建设/可以直接进入网站的正能量

需求&#xff1a;根据标签从产品标签关系表里筛选产品&#xff0c;一个产品对应多个标签&#xff0c;现在要筛选N个标签都有的产品。参入会传入一个标签数组 难点&#xff1a;如果用sql去写&#xff0c;可以循环标签集合&#xff0c;拼出sql语句进行查询。但是项目框架用的EF框…...

郑州网站建站网站/seo推广优化工具

在我们这个行业里&#xff0c;每天都有很多人在跳槽&#xff0c;也有很多人在犹豫着是否应该跳槽。另外&#xff0c;由于受疫情的影响&#xff0c;今年找工作相对来说确实没有往年乐观&#xff0c;网上很多也称今年将是有史以来最难就业年&#xff0c;那么今天我们就来聊聊关于…...

上海浦东网站建设公司/新产品的推广销售方法

一、网络互联模型因特网在刚面世时&#xff0c;只有同一制造商生产的计算机才能彼此通信&#xff0c;制定网络互联模型的目的就是为异种的计算机互连提供一个共同的基础和标准框架&#xff0c;并为保持相关标准的一致性和兼容性提供共同的参考。互联参考模型&#xff1a;OSI七层…...

网站留言模块/销售

1.vux3.x性能比vue2.x快1.2~2倍 ①diff方法优化 ②静态提升 ③事件侦听器缓存 ④ssr渲染 1. diff方法优化 vue2.0中的虚拟dom是进行全量的对比 vue3.0新增了静态标记(PatchFlag)&#xff0c;在于上次虚拟节点进行对比的时候&#xff0c;只对比带有patch flag的节点。并且可以…...

wordpress第三方/百度seo关键词外包

adi sharc 汇编库 在cces安装目录下有针对dsp进行优化的dsp code&#xff08;asm 汇编优化&#xff09;&#xff0c;在\SHARC\lib\src\libdsp_src目录 下&#xff0c;包括 1.数据位的扩展、压缩 2.基础运算函数 3.自相关 4.biquad 5.bit 翻转 6.复数的绝对值 7.复数加法 8.笛卡…...

福建省住房和城乡建设部网站/域名免费注册

文章概述&#xff1a; 一、逻辑卷存储概念 二、逻辑卷管理器 三、管理物理卷 四、管理卷组 AIX的存储管理和逻辑卷管理&#xff08;Logical Volume Management&#xff0c;LVM&#xff09; 一、逻辑卷存储概念 五个基本的逻辑卷存储概念&#xff1a;物理卷&#xff08;PV&am…...