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

一、前言

  • 环境:

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

  • 简介:

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

  • 优势:

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

二、项目样式

文件:

Docker运行

flaskweb+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

python 复制代码
from flask import Flask,jsonify
import pymysql

app = Flask(__name__)

@app.route('/')
def hello_world():
    conn = pymysql.connect(
    host='192.168.2.136',  # 主机名
    port=13306,         # 端口号,MySQL默认为3306
    user='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'] = False
    app.run(host='0.0.0.0',port='8085', debug=True)

Dockerfile

python 复制代码
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

powershell 复制代码
Flask==3.0.0
PyMySQL==1.0.2

docker-compose.yml:

yaml 复制代码
version: '3.1'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    network_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:/logs
    environment:
     MYSQL_ROOT_PASSWORD: Dl123456
  flaskweb:
    image: flaskmysql:v2.0.0
    container_name: flaskweb
    restart: always
    network_mode: 'bridge'
    ports:
     - "8085:8085"                                                                                                                                                                                          

startFlaskweb.sh

powershell 复制代码
#!/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 ]];then
    docker stop ${flaskcontainerId}
    docker stop ${mysqlcontainerId}
    docker rm ${flaskcontainerId}
    docker rm ${mysqlcontainerId}
    echo "delete ${flaskcontainerName} --SUCCESS"
    echo "delete ${mysqlcontainerName} --SUCCESS"
fi

docker-compose up -d

五、总结

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

相关推荐
alphaTao4 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼4 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君4 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
IT大白鼠4 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
九皇叔叔12 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
lupai15 小时前
手机在网状态接口实测效果与质量评估
大数据·python·智能手机·api接口
愤怒的苹果ext15 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
荷蒲16 小时前
【小白量化Qbuddy】用AI设计miniQMT指标公式计算量化平台
人工智能·python·机器人
阿童木写作16 小时前
跨境电商图片翻译工具,批量翻译视频字幕一键抠图
人工智能·python·音视频
小张同学a.16 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器