上一节:饮冰三年-人工智能-Docker-53-Docker容器数据卷
Docker部署文件帮助系统Mezzanine
背景:
项目背景、意义:
帮助文档,为用户提供产品文档和常见问题的解决方案,包含产品快速入门、操作手册、最佳实践、等资源,给用户提供最全的内容资源。
Mezzanine介绍
Mezzanine是一个功能强大,一致且灵活的内容管理平台。 Mezzanine使用Django框架构建,提供了一个简单但高度可扩展的体系结构,鼓励深入研究和开源代码。在某些方面,Mezzanine类似于Wordpress等工具,提供了用于管理页面,博客文章,表单数据,商店产品和其他类型内容的直观界面。 但是也有不同。
软件环境:
系统版本:
本次使用的服务器具体信息如下: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
前提:已经安装docker
1.项目结构
这里说明下为什么有两个dockerfile:
主要是因为做docker镜像的时候需要一个基础镜像包和一个项目镜像包,大致可以理解基础镜像包指项目所需要运行的基础环境(比如说linux系统环境,python环境等等),项目镜像包大致可以理解是项目所需要的各种插件框架等(比如说Django项目肯定需要django框架以及其他的项目所依赖的框架等等)这里我的项目并没有使用到数据库,所以在这里不做数据库的环境,需要的自行将自己的数据库的环境添加进dockerfile文件中进行数据库安装)
2.创建mezzanine项目
2.1 安装mezzanine
sudo pip install mezzanine
2.2 创建mezzanine项目
sudo mezzanine-project XXX
XXX:为项目的名称,此处为help_doc
3.搭建Docker环境
3.1 创建目录结构
cyuser@cyuser-virtual-machine:~/st_test_project/cy_help$ mkdir base_images
cyuser@cyuser-virtual-machine:~/st_test_project/cy_help$ echo > Dockerfile
cyuser@cyuser-virtual-machine:~/st_test_project/cy_help$ echo > ./base_images/Dockerfile
cyuser@cyuser-virtual-machine:~/st_test_project/cy_help$ mkdir ./base_images/scripts
cyuser@cyuser-virtual-machine:~/st_test_project/cy_help$ echo > ./base_images/scripts/provision.sh
3.2 编辑基础镜像Dockerfile(主要就是对系统环境,镜像目录等设置)
注意:执行命令的时候一定到启动docker服务
sudo docker build -t base_cy_help_image:1.0 .
完成之后截图
ps:如果创建过程中出现 net/http: TLS handshake timeout 等问题
sudo vim /etc/docker/daemon.json
暂时配置为: "registry-mirrors": ["https://owwdylkq.mirror.aliyuncs.com"] ,如果该字段有值,记得制作完初始镜像后修改回来,防止其他docker编辑受影响
sudo systemctl daemon-reload
sudo systemctl restart docker
3.5 制作项目镜像Dockerfile文件(主要是搭建对项目的一些框架,插件依赖等)
cd help_doc/help_doc
sudo vim local_settings.py
切换到manage.py同级目录下
执行:
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser
3.7.切换到镜像dockerfile所在的目录执行以下命令
sudo docker build -t cy_help:1.0 . #这里的my_app就是自己项目的镜像名称
3.8 查看镜像,并启动
dock images ps
sudo docker run -it -p 0.0.0.0:9999:8080 68e07e559a99
3.9 测试
前台展示
后台编辑
前台展示
4.问题处理
4.1:数据库字符集设置成utf-8
/*生成SQL,然后导出执行。这里用DATABASE()表示当前的数据库,也可以指定数据库名字。*/ SELECT CONCAT( 'ALTER TABLE ',TABLE_NAME,' CONVERT TO CHARACTER SET utf8;') FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'help_doc' ORDER BY TABLE_NAME;