django项目建立教程见Django实现算法web服务_Mugo_Moon的博客-CSDN博客
1、生成依赖包文件requirements.txt
(1)全局环境依赖全部生成(或单虚拟环境)
pip freeze > requirements.txt
(2)只生成项目依赖(pipreqs
,github地址为:https://github.com/bndr/pipreqs)
# pipreqs安装
[root@100-020-gpuserver PersonEval]# pip install pipreqs
# 依赖生成
[root@100-020-gpuserver PersonEval]# pipreqs . --encoding=utf8 --force
2、pip.conf安装依赖包镜像源指定(vim ~/.pip/pip.conf)
[global]
trusted-host= pypi.***.com
index-url=http://pypi.***.com/simple
3、docker生成镜像文件时执行的文本文件(dockerfile)
FROM python:3.7
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY pip.conf ~/.pip/pip.conf
COPY requirements.txt /usr/src/app/
RUN pip install -i http://pypi.***.com/simple --trusted-host pypi.***.com --default-timeout=1000 -r /usr/src/app/requirements.txt
COPY . /usr/src/app
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"]
4、Django项目结构如下
[root@100-020-gpuserver PersonEval]# ll
total 16
drwxr-x--- 2 zhangge zhangge 103 Mar 15 15:05 configfiles
drwxr-x--- 5 zhangge zhangge 169 Mar 15 10:24 configSetAPP
-rw-r----- 1 zhangge zhangge 0 Mar 15 10:26 db.sqlite3
-rw-r----- 1 zhangge zhangge 0 Mar 18 15:17 dockerfile
drwxr-x--- 6 zhangge zhangge 180 Mar 15 15:29 evalScoreAPP
-rwxr-x--x 1 zhangge zhangge 630 Mar 12 14:08 manage.py
-rw------- 1 zhangge zhangge 2231 Mar 18 10:22 nohup.out
drwxr-x--- 3 zhangge zhangge 108 Mar 15 10:22 PersonEval
-rw-r----- 1 zhangge zhangge 82 Mar 18 15:45 pip.conf
-rw-r----- 1 zhangge zhangge 14 Mar 18 15:25 requirements.txt
5、从dockerfile生成镜像文件
# 命令docker build -t ImageName:TagName dir
#选项
# -t − 给镜像加一个Tag
# ImageName − 给镜像起的名称,注意只能使用小写字母
# TagName − 给镜像的Tag名
# Dir − Dockerfile所在目录
[root@100-020-gpuserver Djgango_example]# docker build -t personaleval:v0.1 PersonEval
6、使用
# 参数:
# -d: 后台运行容器,并返回容器ID;
# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
[root@100-020-gpuserver Djgango_example]# docker run [--restart=always] -d -it -p 8000:8000 personaleval:v0.1
7、删除镜像
#查看镜像
[root@100-020-gpuserver Djgango_example]# docker images
#删除镜像(强制删除--forced [image ID])
[root@100-020-gpuserver Djgango_example]# docker image rm --force 8a87791b408e
8、保存及加载镜像
#保存镜像
[root@100-020-gpuserver Djgango_example]# docker save 2bd27c187f9a -o ./personaleval-save-0322.zip personaleval:v0.1
#加载镜像
[root@65-035-GPU ~]# docker load < personaleval-save-0322.zip
#查看运行的镜像,-a查看包括暂停的镜像
[root@65-035-GPU ~]# docker ps [-a]
#停止容器
[root@65-035-GPU ~]# docker stop 容器id或名字
[root@65-035-GPU ~]# docker kill 容器id或名字
#启动停止的容器
[root@65-035-GPU ~]# docker start 容器id或名字
#重启容器
[root@65-035-GPU ~]# docker restart 容器id或名字
#暂停/恢复容器
[root@65-035-GPU ~]# docker pause/unpause 容器id或名字
9、在容器中开启一个交互模式的终端
[root@100-020-gpuserver PersonEval]# docker exec -i -t 2270deae58ec /bin/bash
9、报错
[root@100-020-gpuserver PersonEval]# docker build -t PersonEval:v0.1 .
invalid argument "PersonEval:v0.1" for "-t, --tag" flag: invalid reference format: repository name must be lowercase
#镜像名小写
10、更新代码
[root@100-020-gpuserver PersonEval]# docker cp uwsgi.ini 03db575ab395:/opt/algorithm/sow_supply_demand_match/uwsgi.ini
11、从容器创建新镜像
[root@100-020-gpuserver PersonEval]# docker commit 03db575ab395 yingzi_sow_supplydemand_match:1.0.1-preprod