美文网首页
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