1. 程式人生 > 其它 >Docker---部署Flask預測模型

Docker---部署Flask預測模型

技術標籤:工具Pythondocker

Docker部署Flask

首先在本地使用Flask部署模型,參考部落格:Flask部署Keras模型
然後,將其部署到Docker當中,

安裝centos映象

# 安裝映象
docker pull centos

# 進入映象, 伺服器的3344埠號對映到容器的5000埠
docker run -it -p 3344:5000 centos

# 中途退出映象容器使用 CTRl + P + Q,使用exit退出會將已儲存的內容清空

# 再次進入容器
docker attach 容器id

# 檢視正在執行的容器id
docker ps

所下載為最新版本centos 8

容器內環境安裝

python3.6安裝

# 安裝依賴
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

yum -y install wget

# 下載python3.6安裝包,檔案會下載到執行當前命令的目錄中,故注意下載目錄
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

# 下載完後,進行解壓
tar -zxvf Python-3.6.4.tgz

# 進入解壓後的Python-
3.6.4的資料夾,編譯和安裝Python 3.6.4 cd Python-3.6.4 ./configure && make &&make install

安裝完成之後,輸入python3看看是否安裝成功
參考部落格:CentOS 7.0自帶Python2.7

第三方庫安裝

所需第三方庫及版本資訊統一放至txt檔案內
在這裡插入圖片描述

# 安裝
pip3 install -r requirements.txt

注:centos8使用pip3
其中keras_contrib通過以下命令安裝:

# 先安裝git
yum install git

# 安裝keras_contrib
pip3 install git+
https://www.github.com/keras-team/keras-contrib.git 上面太慢,使用下面三步走更快: git clone https://www.github.com/keras-team/keras-contrib.git cd keras-contrib python3 setup.py install

本地檔案匯入

# 將本地伺服器檔案匯入容器中
docker cp sourcefile.txt ab8647a6dfc0:/root

# 將容器中檔案拉入本地伺服器
docker cp ab8647a6dfc0:/root/sourcefile.txt /root/ove

匯入檔案目錄如下:
在這裡插入圖片描述
只需啟動server.py便可啟動服務

啟動服務

在執行環境安裝好,專案檔案匯入完畢之後,啟動服務

python3 server.py

在這裡插入圖片描述

客戶端呼叫

import requests
data = {
    "text": "NO MARK PLASTIC SCRAP - PET BOTTLE FLAKES WHITE NW. 131,022.00 KGS. 21DAYS FREE TIME DETENTION"
}
header = {"Content-Type": "application/json; charset=utf-8"}
url = "http://伺服器IP地址:3344/predict?"
response = requests.post(url, json=data, headers=header)
res = response.json()
print(res)

該客戶端呼叫只是本人的實踐demo,不同專案中的 url 不同

將容器封裝成映象

在順利完成以上環節後,使用 CTRl + P + Q 退出當前容器。
:不要使用 exit 命令退出,否則會導致之前的配置全部消失!!!
將容器進行封裝,供後續直接呼叫。

docker commit -a "Ove" -m "HG_NER" ab8647a6dfc0 flask_hgner:V1

封裝好後,只需要使用如下命令便可進入相同的Docker環境

docker run -it -p 3344:5000 flask_hgner:V1

映象打包儲存至本機

docker save -o my_flask_hgner.tar flask_hgner:V1

映象從本地載入

docker load<my_flask_hgner.tar

報錯問題

  1. CentOs 8 使用 yum install python-pip 安裝報錯 No match for argument: python-pip 錯誤:沒有任何匹配: python-pip
    解決:Centos 8已經換成python3 使用該命令解決yum install python3-pip
    參考部落格

  2. 需要安裝TensorFlow,遇到庫grpcio安裝不了的問題:
    python3 -m pip install --upgrade setuptools
    pip3 install --no-cache-dir --force-reinstall -Iv grpcio==<version_number>

  3. keras儲存的h5、hdf5模型,載入時出現“AttributeError: ‘str‘ object has no attribute ‘decode‘ “