前提:
母机上已安装anaconda
了解基本的Docker概念、最基本的命令
本文中涉及到的主要命令:
docker pull :从docker hub拉取某个镜像
docker image ls:查看当前系统中的所有镜像
docker build:根据Dockerfile创建一个镜像
docker run:启动某个镜像,运行一个容器
docker ps:查看当前系统中所有运行中的容器
docker ps -a:查看所有容器,不管是否运行
1. 母机上创建python虚拟环境
创建:
conda create -n your_project_name python=3.6
这样会创建一个只有pyhton3.6的环境。
进入虚拟环境:
conda activate your_project_name
example
2. 在虚拟环境中,部署自己的程序和相关文件
安装python依赖,记得记录下来安装了那些包:
上传自己的代码、文件,确保在当前环境下可以正常运行(记住一定要在自己的虚拟环境中)。
3.编写dockerfile
先安装一个基础的镜像,如python3.6环境
docker pull silverlogic/python3.6
直接在命令行复制图中的命令即可。
pull一个python3.6的镜像
然后就开始编写Dockerfile了!
首先我以我的项目为例,来明确几个概念:
项目根目录: \trp_service\
在根目录下,我的文件有这些:
其中,start.sh是我的启动文件,通过sh start.sh即可运行我的服务trp_service.py
这个python程序启动后,会生成一个api,提供词向量计算服务。内部的api端口是9000.
接下来我们编写Dockerfile文件:
在项目的根目录 \trp_service\里,我创建了一个文件,名为Dockerfile,注意只能是这个名字。然后我们进入Dockerfile文件,按照如下内容编写:
FROM silverlogic/python3.6
MAINTAINER gby
ENV BUILD_HOME /trp_service
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/;\
... ...
pip install bert4keras==0.8.4 -i https://pypi.tuna.tsinghua.edu.cn/simple/
COPY . $BUILD_HOME
RUN chmod 777 $BUILD_HOME/start.sh
WORKDIR $BUILD_HOME
CMD $BUILD_HOME/start.sh
注释
4. 开始创建我的Docker镜像
在当前的项目目录中,执行如下命令:
docker build -t trp:v1 .
-t参数后,输入名字:版本
注意命令最后有一个 . ,这是指在当前的目录下去寻找Dockerfile文件。
build成功
创建之后,可以通过docker image ls查看系统镜像,发现trp已经创建好了:
5.启动镜像,生成容器,调用容器内的服务
通过命令:
docker run -itd -p 9000:9000 trp:v1
即可启动服务。
此时通过docker ps查看当前运行的容器:
能看到,就说明容器已经启动成功。
在命令中,我通过-p来设置宿主机和容器内的端口映射。故现在我在宿主机,也可以通过9000端口来访问我容器内的服务了: