Docker---部署Flask預測模型
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
報錯問題
-
CentOs 8 使用 yum install python-pip 安裝報錯 No match for argument: python-pip 錯誤:沒有任何匹配: python-pip
解決:Centos 8已經換成python3 使用該命令解決yum install python3-pip
參考部落格 -
需要安裝TensorFlow,遇到庫grpcio安裝不了的問題:
python3 -m pip install --upgrade setuptools
pip3 install --no-cache-dir --force-reinstall -Iv grpcio==<version_number> -
keras儲存的h5、hdf5模型,載入時出現“AttributeError: ‘str‘ object has no attribute ‘decode‘ “