前端项目发布
执行npm run build 把前端项目发布到dist文件夹中
把前端发布后的dist中文件集成到后端项目中 一般拷贝到后端项目根目录中的templates目录下
配置后端项目的根路由响应 修改根项目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中 实现启动项目的时候便会自动执行
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.归档代码
源代码中的一些带.的无关文件在归档的时候一定要删除掉 否则会影响容器的主程序的正常启动
2.上传到服务器
必须要在宿主机上给容器启动脚本添加执行权限 否则启动容器的时候会提示异常
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
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