前端项目发布

   执行npm run build  把前端项目发布到dist文件夹中

   

把项目部署成docker镜像_docker

  把前端发布后的dist中文件集成到后端项目中  一般拷贝到后端项目根目录中的templates目录下

把项目部署成docker镜像_python_02

 

 配置后端项目的根路由响应  修改根项目app下的urls.py

from django.urls import path, include
from django.conf.urls import url
# from utils.swaggerDocs import SwaggerSchemaView
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from .proxyserver import flower,gosuv


from .views import Index


urlpatterns = [

    url(r'^monitor/', include('monitor.urls')),
    url(r'^portals/', include('portals.urls')),
    url(r'^logaudit/', include('logaudit.urls')),
    url(r'^cmdb/', include('cmdb.urls')),
    url(r'^plugins/', include('plugins.urls')),
    url(r'^filemg/', include('filemg.urls')),
    url(r'^jobmg/', include('jobmg.urls')),
    url(r'^common/', include('common.urls')),
    url(r'^sysconfig/', include('linkconfig.urls')),


]

#一定要加上以下代码处理index响应
from django.conf.urls.static import static
import os
from django.conf import settings
media_root = os.path.join(settings.BASE_DIR, 'templates/view')
urlpatterns += url(r'^$', Index.as_view(), name='index'),
urlpatterns += static('/view', document_root=media_root)

View Code

#! /usr/local/bin/env python
# -*- coding=utf-8 -*-


from django.views.generic.base import TemplateView


class Index(TemplateView):
    template_name = 'view/index.html'

views.py

 

后端项目实现启动自动初始化数据库数据

   把代码写到根项目app目录下的__init__.py中  实现启动项目的时候便会自动执行

  

把项目部署成docker镜像_python_03

from __future__ import absolute_import, unicode_literals
from utils.base import dgLogger
import jobmg,logaudit
import inspect
from portals.models import User
from django.contrib.auth.hashers import make_password

# 任务信息注册
class TaskInfo (object):
    """Widget that lets you choose between task names."""
    _choices = None

    def addSuperUser(self):
        # 初始化超级用户
        if not User.objects.filter(username='admin').exists():
            dgLogger.info("创建超级用户管理员")
            User.objects.create(username='admin', password=make_password('Servyouadmin'), is_superuser=True,
                                information='admin@admin.com')
        else:
            dgLogger.info("系统已经存在初始化用户,无需重新创建")

taskinfo = TaskInfo()
taskinfo.addSuperUser()

__init__.py 初始化数据

 

把项目打包成docker镜像

cat ~/.bash_history

docker pull docker.io/centos
docker run  -itd  -v /mnt/hgfs:/mnt --name="centos" 9f38484d220f  /usr/sbin/init

docker exec -it centos /bin/bash

进入centos7系统容器中安装和搭建项目运行环境

在容器中的项目的根目录下创建一个start.sh


[root@4ec0550e14fd monitor]# vi start.sh 
#! /bin/bash
/root/.pyenv/versions/3.6.5/bin/python /monitor/manage.py runserver 0.0.0.0:8000


chmod +x start.sh
#退出容器终端

docker commit centos centos_linkmonitor:1.0

docker run  -ti -d --name my-link -p 8000:8000 centos_linkmonitor:1.0 /monitor/start.sh

[root@localhost beekeeper]# docker exec -it my-link /bin/bash
[root@a30c18e09d91 /]# ps -ef | grep python
root          7      1  2 07:18 ?        00:00:01 /root/.pyenv/versions/3.6.5/bin/python /monitor/manage.py runserver 0.0.0.0:8000
root         12      7  9 07:19 ?        00:00:03 /root/.pyenv/versions/3.6.5/bin/python /monitor/manage.py runserver 0.0.0.0:8000
root        115     20  0 07:19 ?        00:00:00 grep --color=auto python

#docker导出镜像压缩包
[root@localhost beekeeper]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
centos_linkmonitor   1.0                 934073c77e8e        7 minutes ago       880 MB
docker.io/centos     latest              9f38484d220f        4 months ago        202 MB
[root@localhost beekeeper]# docker save 934073c77e8e > linkmonitor.tar

在另外一个docker节点上
[root@node2 ~]# ls
anaconda-ks.cfg                                       
docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm          linkmonitor.tar                 PDO_MYSQL-1.0.2.tgz
[root@node2 ~]# docker load -i linkmonitor.tar 
[root@node2 ~]# docker tag 934073c77e8e  centos_linkmonitor:0.1
[root@node2 ~]# docker image ls | grep centos
centos_linkmonitor                                               0.1                  934073c77e8e        8 hours ago         880 MB
[root@node2 ~]# docker run  -ti -d --name my-link -p 8000:8000 934073c77e8e  /monitor/start.sh

View Code

 

docker镜像优化升级打包

      把数据库文件和源码文件集成到镜像中使用起来虽然很方便但是会有一些问题

         1.重启容器后数据库会还原成初始状态

         2.每次修改源码都必须重新打镜像

       解决方式: 把数据库和源码包保存到宿主机的特定目录里通过 -v选项挂载到容器中 这样大大提高升级程序的效率

     1.归档代码

       源代码中的一些带.的无关文件在归档的时候一定要删除掉  否则会影响容器的主程序的正常启动

     

把项目部署成docker镜像_docker_04

   2.上传到服务器

      必须要在宿主机上给容器启动脚本添加执行权限  否则启动容器的时候会提示异常

    

把项目部署成docker镜像_docker_05

  3.启动容器  

    docker run -tid -v /root/monitor/beekeeper:/monitor/beekeeper -v /root/monitor/test:/monitor/test -p 8080:8000 --name="my-link" 934073c77e8e /monitor/beekeeper/start.sh
    fcc2d8e138c3db578d95cafe125ca54647ea5bc4c58336b30096bdb325fc585c

   

把项目部署成docker镜像_centos_06

   

把项目部署成docker镜像_python_07

 3.容器程序执行测试脚本获取数据

[root@node2 monitor]# docker exec -ti my-link /bin/bash
[root@fcc2d8e138c3 /]# cd /monitor/test
[root@fcc2d8e138c3 test]# ls
testes.py
[root@fcc2d8e138c3 test]# python testes.py 
app list.....
sscx-svc
sbzx-web
nsrzx-svc
fpzxsvc
yhs-svc
dzgzpt-wsys
nsrzxsvc
hgzx-svc
wszx-svc
hostname list.....
hostname                                        wasttime           reqscount                errcount
hz-dzswj-nb-199-136-52                    26354217.0ms                329148           5220
xj-dzswj-zjgf-199-137-14                    39541107.0ms                48513       903
xj-dzswj-zjgf-199-137-16                    3026568.0ms                2967       3
interface list.....
interface                                        wastetime           reqscount                errcount
gov.etax.dzswj.nsrzx.service.dj.INsrxxService                    2227446.0ms               36552                        6
gov.etax.dzswj.yhzx.service.auth.IBlackCompanyVerifyService                    1042842.0ms       17397                        189
gov.etax.dzswj.nsrzx.service.gt3.INsrxydjService                    190086.0ms           16218                        0
gov.etax.dzswj.nsrzx.service.rd.INsrzgxxService                    142833.0ms               6063                        0
gov.etax.dzswj.nsrzx.service.rd.INsrLxService                    547002.0ms               5577                        3
gov.etax.dzswj.fpzx.service.smrz.ISmrzService                    121788.0ms               4488                        9
gov.etax.dzswj.sbzx.service.sb.IQcxxcxService                    4525608.0ms               4374                        441
gov.etax.dzswj.yhzx.service.smrz.IXxSmrzQueryService                    121290.0ms           3801                        0
gov.etax.dzswj.yhzx.service.auth.ICompanyInfoQuery                    704337.0ms           3369                        0
gov.etax.dzswj.fpzx.service.fpdk.IFpdkxxCxService                    1472061.0ms           3270                        138

View Code