开始前注意事项
拉取镜像
- sameersbn/openfire:latest
- mysql:5.7 (必须低于8,不然openfire连接数据库失败,openfire的JDBC没有新版MySQL的连接器 !!)
我的项目目录
- /root/openfire/ (这是父目录,下面为子目录)
- /root/openfire/data
- /root/openfire/log
- /root/openfire/mysql
openfire 核心端口: 9090: openfire 网页管理端 , 5222: xmpp 客户端连接端口, 7777: 文件发送端口;3306:MySQL 对外端
| 宿主机IP | 虚拟主机IP | 虚拟机NAT映射 | 宿主机端口转发 |
|192.168.56.123 | 192.168.30.10 | 32770:9090 | 32770:32770 |
| 192.168.56.123 | 192.168.30.10 | 32771:5222 | 32771:32771 |
| 192.168.56.123 | 192.168.30.10 | 32772:5222 | 32772:32771 |
| 192.168.56.123 | 192.168.30.10 | 32773:7777 | 不做端口转发 |
为 openfire 单独分一个数据库持久化
docker run -itd --name database-openfire -e MYSQL_USER=[你的用户] -e MYSQL_PASSWORD=[你的密码] -e MYSQL_DATABASE=openfire -e MYSQL_ROOT_PASSWORD=[你的数据库管理员密码] -p 32773:3306 --restart unless-stopped --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /root/openfire/mysql/:/var/lib/mysql mysql:latest
开启 openfire,并关联MySQL
–link 运行的MySQL容器:你为该链接起一个数据库的别名
docker run -itd --name xmpp-server --restart unless-stopped --hostname cllcx --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /roolib/openfire -v /root/openfire/log/:/var/log/openfire -p 32770:9090 -p 32772:7777 -p 32771:5222 --link database-openfire:database-openfire sameersbn/openfire:latest
这里做完请手动进入openfire容器,修改主机,为之后的环境预备
docker exec -it xmpp-server /bin/bash
vi /etc/hostname
输入dd,然后写入,IP地址后面的那个域名可随意改
192.168.56.123 cllcx
重启 openfire 容器
docker container restart xmpp-server
请暴露 你转发的 32770端口,这样你才能在宿主机通过自己的IP访问,我演示的只暴露了一个,你还要再暴露一个信息发送(客户端)访问的端口出来!!!,不知道的看我开头表格里的转发列表,现在宿主机访问
数据库选择标准数据库
进入创建的mysql容器,试着用你创建的用户登录,并查看是否数据库存在

选择XMPP 协议,初次设置,请在高级面板,选择连接安全性:可能时使用加密,允许在不加密流上的纯文本验证;连接端口为你5222映射的主机端口,连接服务器:你的宿主机,文件传送代理:你的7777映射的主机端口
用户名和密码取决你服务端配的账户密码
添加,现在你将得到这样一个提示
接受,OK,大功告成了
手机端
推荐选择 Conversation ( Fdroid)
选择我已有账户
点开设置,选择连接
将主机名和端口打开
回到添加已有账户,输入xmpp地址,主机地址,账户密码,5222映射端口
信任未知证书
你已经完成了
制作不易,垦请您在转载时,在文章出提到 Jamini,谢谢你。