镜像版本
mysql:8.0.46
nasqueron/openfire:latest
docker-compose
version: '3.8'
services:
openfire:
image: nasqueron/openfire:latest
container_name: openfire
ports:
"9090:9090"
"9091:9091"
"5222:5222"
"5223:5223"
"5269:5269"
"7070:7070"
"7443:7443"
"7777:7777"
"3478:3478/tcp"
"3479:3479/tcp"
volumes:
- 你本地的路径:/var/lib/openfire
restart: unless-stopped
mysql:
image: mysql:8.0.46
container_name: openfire_mysql
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: openfire
MYSQL_USER: openfire
MYSQL_PASSWORD: openfire123
ports:
- "3336:3306"
volumes:
- 你本地的路径:/var/lib/mysql
数据库
数据库设置界面分别填入
com.mysql.cj.jdbc.Driver
jdbc:mysql://openfire_mysql:3306/openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8&serverTimezone=UTC
这里的openfire_mysql用的是docker-compose中的container_name: openfire_mysql这里的openfire_mysql
这里应该会失败,因为你还没有给你的openfire容器登录权限,你现在使用宿主机,访问应该也会失败
这时候就需要
去到这里

然后去到这里

使用 mysql -u root -p
然后输入密码登录
你能看到

#用于产看当前查看授权
SELECT user, host FROM mysql.user WHERE user='root';
这里你应该只能看到localhost和%(看版本反正没有你要的东西)
openfire登录不上去是正常因为它的版本其实也挺低的而本机宿主机登录软件的(比如我的navicat版本挺低的)本版低也会导致登录不上去
这时候就需要手动给予权限
-- 创建你需要于权限的地址
CREATE USER 'root'@'你的ip地址' IDENTIFIED BY 'root123';
-- 改认证插件
ALTER USER 'root'@'你的ip地址' IDENTIFIED WITH mysql_native_password BY 'root123';
-- 给予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'你的ip地址' WITH GRANT OPTION;
-- 最后刷新
FLUSH PRIVILEGES;
然后你使用上面的权限查看代码看一下就行了
你能在如下的地方看到是什么地址尝试连接但是因为没有权限而被拒绝

配置完后宿主机访问
这个需要改一下配置文件
去到
/var/lib/openfire/conf/openfire.xml(因为你上面配置了你本地的路径:/var/lib/openfire,所以你可以在你的宿主机上找到,你本地的路径/conf/openfire.xml)
修改成
<adminConsole>
<!-- Disable either port by setting the value to -1 -->
<port>9090</port>
<securePort>9091</securePort>
<interface>0.0.0.0</interface>(这里这里!!!)
</adminConsole>
修改这里就可以了,然后重启就行了