美文网首页
docker制作开源高交互信呼OA系统

docker制作开源高交互信呼OA系统

作者: KS保 | 来源:发表于2020-09-17 19:01 被阅读0次

    前言

    需要有个centos7系统的宿主机环境,然后在宿主机上安装好docker容器。我为了制作出更小的镜像,尽可能的少安装插件,没有安装vim工具,编辑的时候我用的是linux系统自带的sed指令,操作会比vim繁琐一点点,你们也可以根据自己的需要来考虑要不要安装vim工具。同时我为了安全起见,启动容器时没有给予privileged特权,所以里面服务的启动没用systemctl和service工具,用的是原始命令;写这篇文章我主要是想作为笔记用的,里面的我安装了psmisc(图4),这个是我根据我自己的需要安装的工具,你们可以跳过这个

    宿主机上执行

    创建文件夹,下载并解压信呼开源OA软件源码

    cd /home && mkdir xinhu && cd xinhu

    wget http://xinhu-1251238447.file.myqcloud.com/file/xinhu_utf8_v2.1.7.zip

    unzip xinhu_utf8_v2.1.7.zip

    进入目录/home/xinhu/webmian下,将webmainConfig.php1 改成 webmainConfig.php,配置一下里面信息,如数据库,地址等 

    1.png

    拉取一个centos7的docker镜像,并用此镜像启动一个容器

    docker pull centos:7

    docker run -dit --name=xinhu centos:7

    2.png

    进入到容器

    docker exec -it xinhu bash

    下载安装httpd,mariadb和php

    yum -y install httpd mariadb-server mariadb php php-mysql

    3.png

    下载安装killall(这个看个人需要,我用来做监听httpd和mysql服务的,写了一个脚本,一旦httpd或mysql挂掉了,可以保证服务重新拉起)

    4.png

    修改mysql配置文件,添加用户和数据库操作的日志记录

    首先修改/etc/my.cnf文件,添加一个用户

    sed -i '/symbolic-links=0/a user=mysql' /etc/my.cnf

    5.png

    图6和图7是配置数据库操作的日志记录,你们不需要的可以跳过这两步

    先把需要存储数据库操作日志内容的文件创建好,我是放在/var/log/mariadb下的,建议你们也放在这里,创建好了文件一定记得修改文件属性和权限

    cd /var/log/mariadb

    touch general.log

    chmod +x general.log

    6.png

    chown mysql:mysql general.log

    7.png

    再去/etc/my.cnf.d/server.cnf修改配置文件

    sed -i '# this is only for the mysqld standalone daemon/i\general_log=on' /etc/my.cnf.d/server.cnf

    sed -i '# this is only for the mysqld standalone daemon/i\general_log_file=/var/log/mariadb/general.log' /etc/my.cnf.d/server.cnf

    cat查看一下是否添加成功

    cat /etc/my.cnf.d/server.cnf

    8.png

    此时启动mariadb服务,

    /usr/libexec/mysqld

    发现报错,翻车了。。。

    9.png

    不慌,先看看报错,说是不能访问这个插件表,然后网上百度了一下,说出现这个错误的原因是重新编译安装的时候数据目录不一致导致

    然后我就初始化了一下数据库,记得指定用户和安装目录

    mysql_install_db --user=mysql --datadir=/var/lib/mysql

    10.png

    现在再次启动

    /usr/libexec/myssqld

    11.png

    发现服务启动正常,没有报错,美滋滋!

    12.png

    但是,当我执行mysql -u root -p想进数据库里面逛逛时,发现我还是太年轻。。。

    13.png

    看到这报错信息,熟悉的感觉扑面袭来,因为之前踩过这个坑。第一感觉就是user表出了问题,猜测不是密码问题就是host问题。。。

    看到这么熟悉的报错,接下来怎么操作我肯定了然了

    就是去修改一下配置文件,跳过密码认证,然后进入到数据库中,然后再把user表更新一下,再去配置文件中把跳过密码认证的配置去掉

    此时先去到配置文件中,添加skip-grant-tables,使得用户登录的时候直接无密码登录

    sed -i '/user=mysql/a skip-grant-tables' /etc/my.cnf

    14.png

    然后重启mariadb数据库,进入到数据库中

    15.png

    查看user表

    select user,password,host from mysql.user;

    果不其然,执行sql语句后,我发现,导致前面bug的真相只有一个。。。

    那就是密码字段全被置空了,

    为什么密码会被置空,别问我,问就是不知道。。。

    16.png

    现在这一步,我不说你应该也知道了,那就是把密码配一下

    update mysql.user set password=password('//////');

    我发现里面还有用户名为空的记录,

    不多说,看到这种情况我就是干,看到不爽的直接删,反正我是弄着玩玩的,实在不行崩就崩呗,傲娇。。

    delete from mysql.user where user='';

    flush privileges;

    17.png

    更新完了一定记得去配置文件中把跳过密码验证的配置去掉

    sed -i '7d' /etc/my.cnf

    18.png

    现在再重启数据库,发现可以用密码正常登录进数据库了

    数据库就是烦,别以为目前为止我就是遇到了前面这些错,其实不然的,我是从众多坑中走来,才摸索出这一条坑少的路,也怪自己菜,解bug能力差,行吧,不多啰嗦了,继续展示吧。。。

    数据库搞好了再去盘httpd服务,先去修改一下httpd服务的配置文件

    sed -i '/#ServerName www.example.com:80/a\ServerName www.example.com:80' /etc/httpd/conf/httpd.conf

    19.png

    查看是否修改成功

    cat -b /etc/httpd/conf/httpd.conf

    20.png

    启动httpd服务,启动正常,nice!

    /usr/sbin/httpd

    21.png

    目前已经把容器中需要的两大服务整妥了,现在才是真正去操作信呼

    先退出到宿主机上

    执行指令,把信呼源码复制到容器指定的文件夹中

    docker cp /home/xinhu xinhu:/var/www/html

    再进到容器中

    docker exec -it xinhu bash

    cd /var/www/html

    进来发现,复制在/var/www/html中的是整个xinhu文件夹,所以得再多几步操作

    cd /var/www/html

    mv ./xinhu/ ../xinhu

    rm -rf html/

    mv xinhu/ html

    现在html中看到的就是我们想要的状态

    22.png

    然后ps命令查看mariadb和httpd服务是否处于开启状态

    ps -ef | grep mysqld

    ps -ef | grep httpd

    如果没有开启,则把相关服务启动,

    启动mariadb服务命令是 /usr/libexec/mysqld &

    启动httpd服务的命令是 /usr/sbin/httpd &

    现在,所有的准备工作全部搞定了,进入终极一步

    先查看一下容器的ip,

    ifconfig

    然后退出容器,在宿主机上打开浏览器,输入容器的ip/?m=install

    我的容器ip是172.17.0.2

    172.17.0.2/?m=install

    进入到期待的界面

    配置好相关信息和数据库密码

    23.png

    然后提交安装

    24.png

    然后进入到登录界面,初始用户是admin密码是123456

    至此,该有的操作全部搞定,,,

    25.png

    陪你们看看里面的界面吧

    信呼,非常的nice!

    26.png

    最后一步生成属于自己的镜像

    在宿主机上执行

    命令是 docker commit -m '镜像描述' -a '制作者' 容器名  镜像名

    docker commit -m 'my_xinhu' -a 'haha' xinhu xinhuoa:part1

    到现在基础镜像的制作已经搞定了,不过启动完这个镜像后要去到容器中启动httpd和mysqld服务,不过你们可以用docker-compose去启动镜像,配置docker-compose.yml文件,使得镜像启动的时候开启httpd和mysqld服务,docker-compose文件配置的参考可以去到我的dockerhub仓库看一下

    我的Docker Hub——lucaibao/xinhuoa

    赠品:如何将容器制作成镜像并存入自己的仓库中

    docker制作镜像存入自己的dockerhub仓库中,得先有自己的dockerhup账号,没有的话注册一个

    (1)将容器制作成镜像

    docker commit -m '镜像描述' -a '制作者' 容器名  镜像名

    (2)登录本地计算机上的Docker公共注册表,需要认证你的账号密码

    docker login

    (3)标记images

    docker tag 镜像名 username/repository:tag

    (4)将标记的图像上传到存储库

    docker push username/repository:tag

    我制作好的信呼镜像是放在lucaibao/xinhuoa上的,你们可以拉取最新一版

    docker pull lucaibao/xinhuoa:latest

    相关文章

      网友评论

          本文标题:docker制作开源高交互信呼OA系统

          本文链接:https://www.haomeiwen.com/subject/vhxryktx.html