docker部署django项目(实测有效)

花了一点时间看了一下docker部署django项目,特此记录

临时创建个django项目以做测试,django-admin startproject docker_test,项目名:docker_test,然后随便写个测试函数

整体的目录结构如下:

docker部署django项目(实测有效)_第1张图片

首先创建一个Dockerfile文件(没有后缀名)
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像

Dockerfile文件内容如下:

#基于的基础镜像
FROM python:3.5

#代码添加到code文件夹
ADD ./package /code

# 设置code文件夹是工作目录
WORKDIR /code

# 安装支持
RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt

CMD ["python", "/code/docker_test/run.py"]

requirements.txt的生成方法

第一种 适用于 单虚拟环境的情况: :

1

pip freeze > requirements.txt

为什么只适用于单虚拟环境?因为这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的所有包都会在里面,不管是不时当前项目依赖的

第二种 (推荐) 使用 pipreqs ,github地址为: https://github.com/bndr/pipreqs

1

2

3

4

# 安装

pip install pipreqs

# 在当前目录生成

pipreqs . --encoding=utf8 --force

注意 --encoding=utf8 为使用utf8编码,不然可能会报UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 406: illegal multibyte sequence 的错误。

--force 强制执行,当 生成目录下的requirements.txt存在时覆盖

requirements.txt 文件里是python项目所需要的第三方库,内容如下

django==1.8.7
numpy
pandas

创建镜像 

docker build -t test_docker .

查看镜像

docker images

运行镜像,生成并启动容器

docker run -it -p 8000:8000 --name test-docker test_docker

-it:表示交互式终端的容器,非启动后立刻结束的容器

-p 8000:8000:表示将docker的8000端口,映射到Linux的8000端口

--name test-docker:给容器取个名字,嫌麻烦可以省去

test_docker:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)

浏览器输入ip+port+url即可查看

你可能感兴趣的:(docker)