继上一节搭好环境,先找个小demo练练手
目录
这是慕课网上的例子https://www.imooc.com/video/17243
1、首先保证代码能在本地成功运行
本地已有python开发环境(python,pip 等)
项目源码:https://github.com/zj827622690/tensorflow_mnist-demo
2、导出该项目的依赖
虽然我们项目的库是由anaconda管理的,但我们这里还是用pip来导出项目配置(这里我会在后面来解释)
pip freeze > requirements.txt
3、将上面的文件全部移入centos7虚拟机中
并改名mnist_testdemo
虚拟机用到是VMware,需装好docker,很简单这里就略了
4、编写dockerfile
FROM python:3.7
FROM tensorflow/tensorflow:nightly
MAINTAINER zj xx@qq.com
ADD ./mnist_testdemo /code
WORKDIR /code
EXPOSE 8000
RUN pip install -r /code/requirements.txt
CMD ["python", "/code/main.py"]
-------------------
注意:
pip无法下载tensorflow(由于tf太大,一旦网络不好,就会下载失败),所以把它也设为base(即基础镜像,基础镜像需事先在本地下好,docker pull xxx)
ADD ./mnist_testdemo /code 中 /code是别名
WORKDIR /code 指定工作目录
一开始,我准备用conda 来下载库,但一直报错,说连不到网站什么的,只能用pip,这里卡了我好久(conda的库与pip相比,还是太少了~~)
5、运行dockerfile
docker build -t mnist_testdemo .
发现报错
大概意思找不到numpy==1.13.3
opencv-python==3.4.0.12
然后我将requirements.txt相应部分的版本号去掉,如下
numpy
open-python
flask
记得把flask加上去,因为我们项目需要它打成restful api
(第一次运行时间可能有点长,可以倒杯咖啡~~)
6、查看生成的镜像
docker images
7、以守护程序创建并启动容器
docker run -d --name python-demo –p 8000:8000 mnist_testdemo:latest
第一次,发现容器没有成功运行
docker logs 容器id 来查看docker日志
发现报错,大概是说找不到目录文件C:\\Python-demo-project\\mnist_testdemo\\mnist\\mnist_log
这里我一开始是在win10环境下,现在是在linux环境下,当然会出错了
# summay_writer = tf.summary.FileWriter("C:\\Python-demo-project\\mnist_testdemo\\mnist\\mnist_log", sess.graph)
summay_writer = tf.summary.FileWriter("mnist_testdemo/mnist/mnist_log", sess.graph)
改好了这后
再运行一次
成功:
8、测试
ip+端口
9、补充
删除容器 docker rm 容器id
删除镜像 docker rmi 镜像id