一、前言
-
環境:
Linux、docker、docker-compose、python(Flask)、Mysql
-
簡介:
簡單使用Flask框架寫的查詢Mysql數據接口,使用docker部署,shell腳本啟動
-
優勢:
采用docker方式部署更加便于維護,更加簡單快捷,簡單來說:好用
二、項目樣式
文件:
Docker運行
flaskweb+mysql
Mysql:
接口樣式:
腳本啟動:
三、核心點
- docker打包python項目:build打包使用Dockerfile文件,這里需要一個python模塊requirements.txt文件用于pip安裝模塊。
使用docker build -t flaskmysql:v2.0.0
進行打包
flaskweb:
requirements.txt
- 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進入容器里面用來啟動項目。