Docker 本地化部署 Solo,浏览器无法初始化

各位大佬,此问题困扰了我好久。

问题描述:

官方教程命令,在本地电脑和阿里云上运行都不报错,但是本地无法访问 Web 端进行初始化:

docker run --detach --name solo --network=host \
  --env RUNTIME_DB="MYSQL" \
  --env JDBC_USERNAME="root" \
  --env JDBC_PASSWORD="root" \
  --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
  --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
  --rm \
  b3log/solo --listen_port=8080 --server_scheme=http --server_host=这里替换了以下几个情况:localhost、127.0.0.1、本地内网IP、阿里云公网ip

本地环境:Mac+Docker

阿里云环境:Centos+Docker

只有访问 http://阿里云公网 ip:8080/ 地址出现了初始化页面 👍 👍👍👍

http://localhost:8080 出现 无法访问 😭 😭😭

本地试了好多个入口:

http://localhost:8080

http://127.0.0.1:8080

http://10.1.160.254:8080

这三个地址 都看不到 欢迎使用 Solo 页面

好纳闷,是哪里出问题了?

请指教。

以下是本地 Docker 日志

[INFO ]-[2020-07-15 20:12:42]-[org.b3log.solo.Server:253]: Solo is booting [ver=4.2.0, os=Linux, isDocker=true, inJar=false, luteAvailable=false, pid=1, runtimeDatabase=MYSQL, runtimeMode=PRODUCTION, jdbc.username=root, jdbc.URL=jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC],
[WARN ]-[2020-07-15 20:12:42]-[org.b3log.solo.service.InitService:156]: Solo has not been initialized, please open your browser to init Solo,

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250
    • --server_host 不是监听端口,本地的话用 localhost,服务器上用公网 IP 或者域名
    • 服务器上用 NGINX 反代一下

    具体请参考 B 站上的视频教程,还有疑问欢迎跟帖,谢谢。

    2 回复
  • bugless

    公网服务是 ok 的,已经 OK 了。

    只是 本地 不行 无法 localhost:8080 很奇怪。

  • 88250

    我没有试过 Mac Docker,本地的话可以试试通过 Java 启动或者用源码搭建,视频教程可参考 B 站 Solo 教程

    2 回复
  • bugless

    好,感谢,抽空再试试。

    生产环境 aliyun 已经妥了,开始正式启用了,本地无所谓了。

  • mufengcoding

    防火墙或者安全策略导致的吧

  • JokerLee

    哥,问个问题哈,我把 solo 干了重新部署一下,docker run 的时候报错了

    [INFO ]-[2020-07-18 07:43:58]-[org.b3log.solo.Server:215]: Solo is booting [ver=3.7.0, os=Linux, isDocker=true, inJar=false, luteAvailable=false, pid=1, runtimeDatabase=MYSQL, runtimeMode=PRODUCTION, jdbc.username=root, jdbc.URL=jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC]
    [ERROR]-[2020-07-18 07:43:59]-[org.b3log.solo.service.UpgradeService:103]: Please upgrade to v3.0.0 first
    

    我是 3.7.0 它让我先升级 3.0,这咋整,

    我不想升级啊,之前给博客个性化了一下,发现升级到最新版本不兼容我又给赶回来的,求救啊

    1 回复
  • 88250

    看下升级那段代码,继续改吧。

    1 回复
  • JokerLee

    🤣🤣🤣 好的吧,估计这对我来说也是最优解了

  • bugless 1 1 评论

    对于这个问题,应该有些眉目了

    我的是 Mac 环境,Docker for Mac 是不支持 --net=host 的

    换句话说:--net=host 仅在 Linux 系统上有效

    所以 solo 这个官方 docker 安装脚本在 Docker for Mac 下是有问题的。

    1 回复
  • InkDP

    Mac 的命令好像有点不一样,你可以产考下我的

    docker run -p 8080:8080 --detach --name solo
    --env RUNTIME_DB="MYSQL"
    --env JDBC_USERNAME="root"
    --env JDBC_PASSWORD="123456"
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"
    --env JDBC_URL="jdbc:mysql://192.168.0.112:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    --volume /Users/inkdp/code/solo/src/main/resources/skins:/opt/solo/skins/ b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost

    1 回复
  • 88250

    好的,感谢指出问题 🙏

  • bugless

    你的可以?

    我这边不行。我试过各种组合。

    1 回复
  • InkDP

    我上面的命令是可以的

请输入回帖内容 ...