现在流行用 docker 部署环境,python 开发的 django 项目也可以写个 Dockefile 文件,方便docker部署。
django 是依赖于python环境的,所有镜像制作是用一个python的镜像基础上把我们需要的环境添加过去就可以了。
Dockefile的编写参考前面这篇https://www.cnblogs.com/yoyoketang/p/11397597.html
FROM python:3.6.8 MAINTAINER yoyo <283340479@qq.com> # 更新下apt列表 RUN apt-get update # 更新pip RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple # 工作目录 WORKDIR /code ADD . /code # pip安装依赖包 RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple # 打开容器的8000端口 EXPOSE 8000 # 执行命令行,启动django服务 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
requirements.txt 是django项目需要的依赖包,是开发完 django 项目之后,通过 pip 生成的
pip freeze >requirements.txt
Dockefile 和requirements.txt都是放到 django 项目的根目录下
build镜像Dockefile 文件完成后,其它小伙伴拿到项目源码包,就可以在任意地方部署了。
把整个代码包放到 linux 服务器上,使用 docker 来 build 一个镜像
docker build -t django_yoyo .
这时候会看到build的步骤,等依赖包安装完成
[root@VM_0_2_centos yoyo]# docker build -t django_yoyo . Sending build context to Docker daemon 7.729MB Step 1/9 : FROM python:3.6.8 ---> 48c06762acf0 Step 2/9 : MAINTAINER yoyo <283340479@qq.com> ---> Using cache ---> 791e4b982a47 Step 3/9 : RUN apt-get update ---> Using cache ---> 4d9a2088753e Step 4/9 : RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple ---> Using cache ---> d896cb71a359 Step 5/9 : WORKDIR /code ---> Using cache ---> c4d15025b172 Step 6/9 : ADD . /code ---> 8dcd424c81cd Step 7/9 : RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple ---> Running in 8b84c81bfe5e Step 8/9 : EXPOSE 8000 ---> Running in d02c088d286d Removing intermediate container d02c088d286d ---> 87bda6266abe Step 9/9 : CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] ---> Running in 1e616dd15c29 Removing intermediate container 1e616dd15c29 ---> 984e5b0a9896 Successfully built 984e5b0a9896 Successfully tagged django_yoyo:latest
当看到 Successfully built
镜像就制作完成了,可以使用docker images查看镜像
[root@VM_0_2_centos yoyo]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE django_yoyo latest 984e5b0a9896 58 seconds ago 1.2GB
这是本地镜像的制作过程,有镜像仓库的小伙伴,上传到镜像仓库,其它小伙伴部署起来更方便,直接通过docker pull就可以拉到镜像了。
镜像仓库上传参考这篇https://www.cnblogs.com/yoyoketang/p/11923263.html
docker run
运行容器,将容器8000端口映射到宿主机8000端口
docker run -d -p 8000:8000 --name web_yoyo1 django_yoyo
查看容器状态'docker ps -a'查看容器是否是Up状态
[root@VM_0_2_centos yoyo]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ffd12bbbc16a django_yoyo "python manage.py ru…" About a minute ago Up About a minute 0.0.0.0:8000->8000/tcp
容器启动成功就可以访问django项目的页面了