0 序言

        在之前的博客中:

用docker部署webstack导航网站-其一

docker 部署 opensack_django

我成功的将webstack官方推荐的docker容器部署了出来,但是官方的docker容器后端使用的是PHP,我们需要一些个性化的定制的话,继续使用这个容器是不可行的。并且,该容器后台写的确实是不错,但是我们想加一些个性化的功能,而我对PHP又不熟,直接修改容器,用docker commit命令的话会使得容器变得很臃肿,这样子就得不偿失了。

        于是,我决定自己实现一个后端,分别用于处理前端讲台页面,并提供一个后台管理系统。目前先实现后台管理系统,目前的后台管理系统展示如下:

1 后台管理系统展示

这是root用户登陆时的界面,可以看到,既可以修改网站相关的信息,也可以查看并修改登录用户们的权限信息。

docker 部署 opensack_运维_02

         而登录的是普通用户的话就只能修改网站相关的信息,不能查看修改用户们的授权信息,事实上,权限这一步是可以定制的(增删改查,以及权限分组)。普通用户登陆界面如下所示,可以看见“认证和组”那一块消失了:

docker 部署 opensack_docker_03

         Categories(分类选项)是用来管理网站分类的,具体内容如下所示:

docker 部署 opensack_docker 部署 opensack_04

         sites是管理每个网站的,可以用来定制每个标签的具体信息,具体内容如下所示:

docker 部署 opensack_docker 部署 opensack_05

        由于本文讨论的是docker部署django,所以具体网站的源码就暂不展示了,等我有兴趣了也许会开一个博客细说。

2 用dockerfile和制作django镜像

 我写的dockerfile如下所示:

FROM python:3.7
MAINTAINER tim_tian<329644893a@gmail.com>

#RUN apt-get update
#RUN apt-get install -y wget
#RUN apt-get install -y vim

#RUN apt install -y --force-yes libmysqlclient-dev
#RUN apt-get install -y --force-yes python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev
#RUN pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
#RUN pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

EXPOSE 8222
COPY . /root/own_navigation_website_admin/
WORKDIR /root/own_navigation_website_admin
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

CMD /bin/bash
# CMD ["python","manage.py","runserver","0.0.0.0:8222"]

        注释的内容是可选的,前3行注释是给容器安装vim。

        再4行注释是手动安装django项目的依赖项,前两行是mysqlclient库的依赖,防止mysqlclient安装失败使用的,后来改用了requirements.txt文件进行操作后,就全部注释掉了。

        最后一行CMD命令是用来运行django的,但不知道为何不起作用,每次都需要我进入容器手动启动django才行。没有注释掉的

WORKDIR /root/own_navigation_website_admin

        这一句正是方便我进入项目目录,然后启动django项目而添加的。

3 构建docker镜像期间踩到的一些坑

无法用pip安装PyPi库依赖:虽然没有报错,但是打开容器后发现没有安装库

这个是应为需要禁用缓存,使用--no-cache命令即可,例如:

docker build -f dockerfile -t my_web_site_image --no-cache

4 结束

        后续,我打算自己重新构建前端。