Flask+Mysql项目docker-compose部署(Pythondocker-compose详细步骤)

一、前言

  • 环境:

    Linux、docker、docker-compose、python(Flask)、Mysql

  • 简介:

    简单使用Flask框架写的查询Mysql数据接口,使用docker部署,shell脚本启动

  • 优势:

    采用docker方式部署更加便于维护,更加简单快捷,简单来说:好用

二、项目样式

文件:
在这里插入图片描述

Docker运行
flaskweb+mysql
dokcer

Mysql:
mysql

接口样式:
接口

脚本启动:
在这里插入图片描述

三、核心点

  1. docker打包python项目:build打包使用Dockerfile文件,这里需要一个python模块requirements.txt文件用于pip安装模块。
    使用docker build -t flaskmysql:v2.0.0进行打包
    flaskweb:
    在这里插入图片描述requirements.txt
    在这里插入图片描述
  2. docker-compose:使用docker-compose进行打包,使用docker-compose.yml文件,使用docker-compose up -d启动

在这里插入图片描述

四、代码

flaskMysql.py

from flask import Flask,jsonify
import pymysqlapp = Flask(__name__)@app.route('/')
def hello_world():conn = pymysql.connect(host='192.168.2.136',  # 主机名port=13306,         # 端口号,MySQL默认为3306user='root',       # 用户名password='Dl123456', # 密码database='face',   # 数据库名称)# 创建游标对象cursor = conn.cursor()# 执行 SQL 查询语句cursor.execute("SELECT * FROM base_customers")# 获取查询结果result = cursor.fetchall()return jsonify(result)if __name__ == '__main__':app.config['JSON_AS_ASCII'] = Falseapp.run(host='0.0.0.0',port='8085', debug=True)

Dockerfile

FROM python:3.9
WORKDIR /app/etc
COPY ./requirements.txt /app/etc	
COPY ./flaskMysql.py /app/etc
RUN pip install --no-cache-dir -r /app/etc/requirements.txt 
CMD [ "python", "./flaskMysql.py" ]

requirements.txt

Flask==3.0.0
PyMySQL==1.0.2

docker-compose.yml:

version: '3.1'
services:mysql:image: mysql:5.7container_name: mysqlrestart: alwaysnetwork_mode: 'bridge'ports:- "13306:3306"volumes:- /opt/python_project/mysql/conf:/etc/mysql/conf- /opt/python_project/mysql/data:/var/lib/mysql- /opt/python_project/mysql/logs:/logsenvironment:MYSQL_ROOT_PASSWORD: Dl123456flaskweb:image: flaskmysql:v2.0.0container_name: flaskwebrestart: alwaysnetwork_mode: 'bridge'ports:- "8085:8085"                                                                                                                                                                                          

startFlaskweb.sh

#!/bin/bash
flaskcontainerId=`docker ps -a | grep flaskweb | awk '{print $1}'`
flaskcontainerName=`docker ps -a | grep flaskweb | awk '{print $2}'`
mysqlcontainerId=`docker ps -a | grep mysql:5.7 | awk '{print $1}'`
mysqlcontainerName=`docker ps -a | grep mysql:5.7 | awk '{print $2}'`if [[ $flaskcontainerId || $mysqlcontainerId ]];thendocker stop ${flaskcontainerId}docker stop ${mysqlcontainerId}docker rm ${flaskcontainerId}docker rm ${mysqlcontainerId}echo "delete ${flaskcontainerName} --SUCCESS"echo "delete ${mysqlcontainerName} --SUCCESS"
fidocker-compose up -d

五、总结

简单搭建了一个flask接口项目,使用docker进行部署,用来练习docker-compose部署与docker打包,docker-compose.yml文件格式很严格,每个:后面都要跟一个空格,Dockerfile文件大致是引入程序运行环境,比如python、openjdk等,需要copy那些文件进入容器里面,确定工作路径,需要运行那些命令作为程序启动前的操作,最后CMD运行那个命令来启动项目,你可以写个shell脚本copy进入容器里面用来启动项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/225013.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s实战之ELK日志管理

首先查看总体流程 首先创建namespace apiVersion: v1 kind: Namespace metadata:name: kube-logging 一、首先创建es.yaml --- apiVersion: v1 #kubernetes API版本,采用最新版本v1 kind: Service #资源类型定义为Service metadata: name: elasticsearch-logging # …

时间Date

你有没有思考过时间问题: 前端为什么可以直接看见时间格式的数据 后端怎么接受的数据,怎么处理的 一般来说:前端传输来数据都是时间格式的字符串,那么后端需要能够解析时间格式的字符串,归功于JSONFormat ,可以解析…

LED靠近语音声光警示灯

应用范围: 适用于高压线塔、施工工地、铁路道口等危险区域。通过微波感应检测人体行动,触发语音警报,做到提前预警,避免可能发生的危险事故。 产品特点 1:设备采用独立太阳能供电系统,警示灯与语音报警装置均为太阳能独立供电&…

【Linux驱动】最基本的驱动框架 | LED驱动

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀最基本的驱动框架⚽驱动程序框架⚽编程 🏀LED驱动⚽配置GPIO⚽编程…

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.向量加权平均算法4.实验参数设定…

uniapp创建/运行/发布项目

1、产生背景----跨平台应用框架 在移动端各大App盛行的时代,App之间的竞争也更加激烈,他们执着于让一个应用可以做多个事情 所以就应运而生了小程序,微信小程序、支付宝小程序、抖音小程序等等基于App本身的内嵌类程序。 但是各大App他不可…

【ARMv8M Cortex-M33 系列 1 -- SAU 介绍】

文章目录 Cortex-M33 SAU 介绍SAU 的主要功能包括SAU 寄存器配置示例 Cortex-M33 SAU 介绍 在 ARMv8-M 架构中,SAU(Security Attribution Unit)是安全属性单元,用于配置和管理内存区域的安全属性。SAU 是 ARM TrustZone 技术的一…

JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么 __proto__ 是 JavaScript 中对象的一个内部属性,它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性,通过它可以访问对象的原型。prototype 是函数对象特有的属性,每个函数都…

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错的问题

目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序,查看库与库的依赖关系,找出出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总(专栏文章列表&…

Apache RocketMQ,构建云原生统一消息引擎

本文整理于 2023 年云栖大会林清山带来的主题演讲《Apache RocketMQ 云原生统一消息引擎》 演讲嘉宾: 林清山(花名:隆基),Apache RocketMQ 联合创始人,阿里云资深技术专家,阿里云消息产品线负…

正则表达式:元字符

一、什么事元字符 正则是由一系列的元字符组成的,所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,元字符是构成正则表达式的基本元件。 二、元字符的分类 1.特殊单字符 表达式含义\d匹配任意一个数字\D匹配任意非数字\w匹配任意一个字母、…

.NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布

作者: Jon Galloway - Principal Program Manager, .NET Community Team Mehul Harry - Product Marketing Manager, .NET, Azure Marketing 排版:Alan Wang .NET Conf 2023 是有史以来规模最大的 .NET 会议,来自全球各地的演讲者进行了 100 …

3分钟了解安全数据交换系统有什么用!

企业为了保护核心数据安全,都会采取一些措施,比如做网络隔离划分,分成了不同的安全级别网络,或者安全域,接下来就是需要建设跨网络、跨安全域的安全数据交换系统,将安全保障与数据交换功能有机整合在一起&a…

掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历:样例 1:样例 2:样例 3:提示: 分析:题解:rust:go:c:python:java: 94. 二叉树的中序遍历: …

51单片机相关寄存器

前言 单片机复习的时候对应寄存器的记忆感觉很混乱,这里进行一下整理,后面的单词是我用来辅助记忆的,可能并不是表示原本的含义。 P3口的第二功能 0RXD 串行数据输入口 1TXD串行数据输出口2INT0外部中断0输入3INT1外部中断1输入4T0定时器0外部计数输入…

2023新能源汽车,吵得越凶,卖得越多

作者 | 辰纹 来源 | 洞见新研社 2023年的汽车行业很残酷,合资大败退,市场份额被自主品牌大幅渗透,三菱退出中国市场,成为真实写照。 新能源车企,威马领头,天际、自游家NIUTRON、恒驰、爱驰、雷丁等造车新…

【大厂面试】之 美团(一面经含答案)

美团 一面 tcp三次握手,四次挥手。time-wait、close-wait状态。MSL代表什么?为什么time-wait是2MSL,可不可以更长?如果不设置time-wait有什么影响 time-wait是主动关闭方的一个状态;close-wait是被动关闭方的一个状态…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏,它和扫雷在经典小游戏这方面可以说是旗鼓相当,它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是:用游戏把子上下左右控…

地域与文化,智能酒精壁炉选择的多元因素

不同地域和文化背景常常会影响人们的各种选择,尤其是对智能酒精壁炉的选择上,更会受到地域气候、文化传统以及个人审美等多方面因素的影响,下面将探讨不同地域和文化在智能酒精壁炉选择上的独特理由。 在寒冷地区,人们会更倾向于选…