git clone --recurse-submodules https://github.com/huaxlin/docker-fastapi-serve-ml-model.git
the
music_recommender
demo reference to:
build ML development docker image:
$ docker build -t music-recommender:dev-python3.9 -f Dockerfile.dev .
$ docker run -d --rm --name music-recommender-dev \
-v $PWD/venv39:/venv39 \
-v $PWD:/code \
music-recommender:dev-python3.9
b8fefb7fca0d...
$ docker exec -ti b8fefb7fca0d bash
root@b8fefb7fca0d:/code#
create python environment:
root@b8fefb7fca0d:/code# python -m venv --copies --system-site-packages /venv39
...
setup python environment for ML development:
root@b8fefb7fca0d:/code# /venv39/bin/python -m pip install -r requirements.txt
...
root@b8fefb7fca0d:/code#
root@b8fefb7fca0d:/code# source /venv39/bin/activate
(venv39) root@b8fefb7fca0d:/code#
(venv39) root@b8fefb7fca0d:/code# python -m music_recommender.train
(venv39) root@b8fefb7fca0d:/code# ls -alFht
-rw-r--r-- 1 root root 2.6K Dec 12 11:47 music_recommender.joblib
...
(venv39) root@b8fefb7fca0d:/code# python -m music_recommender.test
metrics = {'accuracy': 1.0}
(venv39) root@b8fefb7fca0d:/code# echo -n '{"age": 10, "gender": 1}' |
python -m music_recommender
{'class': 'HipHop'}
build service docker image:
$ docker build -t music_recommender:prd-2022-12-12 -f Dockerfile.service .
run service docker image:
$ docker run -d --name serve-ml-model-with-fastapi \
-p 8080:8080 \
music_recommender:prd-2022-12-12
dfd48661c592...
stop service and remove it:
$ docker stop dfd48661c592 $ docker rm dfd48661c592
$ echo -n '{"age": 10, "gender": 0}' | http POST localhost:8080/predict
HTTP/1.1 200 OK
content-length: 17
content-type: application/json
date: Mon, 12 Dec 2022 06:03:29 GMT
server: uvicorn
{
"class": "Dance"
}
install
http
command by:pip install httpie