容器中的 solo, 怎么使用 lute-http

本贴最后更新于 2018 天前,其中的信息可能已经时过境迁

容器中的 solo, 怎么使用 lute-http

src/main/java/org/b3log/solo/util/Markdowns.java

private static final String LUTE_ENGINE_URL = "http://localhost:8249";

main.go

addr := "127.0.0.1:8249"

如果 solo 和 lute-http 分别在两个容器中, 或者 solo 在容器中, lute-http 在 host 中.
或者能否把 lute-http 也一并打包进 solo 容器?

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 主要是网络通即可,Solo 容器和 Lute HTTP 容器在一个网络里就行。

    1 回复
  • zhoujin7
    作者

    @88250
    创建了一个自定义网络, 两个容器都在同一个网络下. 但是不行.

    ubuntu@aliyun:~$ docker restart lute-http lute-http ubuntu@aliyun:~$ docker logs lute-http I 2019/09/21 11:42:16 main.go:72: booting Lute HTTP Server on [127.0.0.1:8249] ubuntu@aliyun:~$ docker restart solo solo ubuntu@aliyun:~$ docker logs solo [INFO ]-[2019-09-21 19:42:46]-[com.zaxxer.hikari.HikariDataSource:350]: HikariPool-1 - Shutdown initiated... [INFO ]-[2019-09-21 19:42:46]-[com.zaxxer.hikari.HikariDataSource:352]: HikariPool-1 - Shutdown completed. [INFO ]-[2019-09-21 19:42:46]-[org.b3log.solo.SoloServletListener:155]: Destroyed the context [INFO ]-[2019-09-21 19:42:51]-[org.b3log.solo.SoloServletListener:99]: Solo is booting [ver=3.6.5, servletContainer=jetty/9.4.12.v20180830, os=Linux, isDocker=true, luteAvailable=false, pid=1, runtimeDatabase=MYSQL, runtimeMode=PRODUCTION, jdbc.username=root, jdbc.URL=jdbc:mysql://172.28.0.3:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC] [INFO ]-[2019-09-21 19:42:51]-[com.zaxxer.hikari.HikariDataSource:110]: HikariPool-1 - Starting... [INFO ]-[2019-09-21 19:42:52]-[com.zaxxer.hikari.HikariDataSource:123]: HikariPool-1 - Start completed. [INFO ]-[2019-09-21 19:42:52]-[org.b3log.solo.SoloServletListener:138]: Solo is running ubuntu@aliyun:~$ get-ctnIp.bash /lute-http - 172.28.0.5 /solo - 172.28.0.6 /nginx-proxy - 172.28.0.2 /mysql - 172.28.0.3

    把 main.go 监听 host 从 127.0.01 改成 0.0.0.0 还是不行.

    ubuntu@aliyun:~$ docker restart lute-http lute-http ubuntu@aliyun:~$ docker logs lute-http I 2019/09/21 11:56:20 main.go:72: booting Lute HTTP Server on [0.0.0.0:8249] ubuntu@aliyun:~$ docker restart solo solo ubuntu@aliyun:~$ docker logs solo [INFO ]-[2019-09-21 19:56:39]-[com.zaxxer.hikari.HikariDataSource:350]: HikariPool-1 - Shutdown initiated... [INFO ]-[2019-09-21 19:56:39]-[com.zaxxer.hikari.HikariDataSource:352]: HikariPool-1 - Shutdown completed. [INFO ]-[2019-09-21 19:56:39]-[org.b3log.solo.SoloServletListener:155]: Destroyed the context [INFO ]-[2019-09-21 19:56:44]-[org.b3log.solo.SoloServletListener:99]: Solo is booting [ver=3.6.5, servletContainer=jetty/9.4.12.v20180830, os=Linux, isDocker=true, luteAvailable=false, pid=1, runtimeDatabase=MYSQL, runtimeMode=PRODUCTION, jdbc.username=root, jdbc.URL=jdbc:mysql://172.28.0.3:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC] [INFO ]-[2019-09-21 19:56:44]-[com.zaxxer.hikari.HikariDataSource:110]: HikariPool-1 - Starting...
  • zhoujin7
    作者

    fork 一份 lute-http 就改了下监听的 host 127.0.0.1 -> 0.0.0.0
    下面是 lute-http 的 Dockerfile
    https://raw.githubusercontent.com/zhoujin7/docker-auto-build/master/lute-http/Dockerfile

    创建自定义网络
    docker network create --opt com.docker.network.bridge.name=mynetwork --subnet=172.28.0.0/16 mynetwork

    创建 nginx-proxy, nginx-proxy-letsencrypt, mysql 容器

    创建 lute-http 容器

    docker run -d \ --name lute-http \ --network mynetwork --ip 172.28.0.5 --dns 114.114.114.114 \ --restart=always \ registry.cn-shenzhen.aliyuncs.com/jin7/lute-http

    创建 solo 容器

    docker run -d \ --name solo \ --network mynetwork --ip 172.28.0.6 --dns 114.114.114.114 \ -e "VIRTUAL_HOST=hostname.com" \ -e "LETSENCRYPT_HOST=hostname.com" \ -e RUNTIME_DB="MYSQL" \ -e JDBC_USERNAME="root" \ -e JDBC_PASSWORD="nonpassword" \ -e JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \ -e JDBC_URL="jdbc:mysql://172.28.0.3:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ --link mysql:db \ --restart=always \ b3log/solo --listen_port=8080 --server_scheme=https --server_host=hostname.com --server_port=
    1 回复
  • 可能是因为 Solo 里面用的 localhost?这个解析不知道容器里会解析成啥哦。

    2 回复
  • zhoujin7
    作者

    @88250
    src/main/java/org/b3log/solo/util/Markdowns.java

    修改为:
    private static final String LUTE_ENGINE_URL = "http://172.28.0.5:8249";

    main.go

    修改为:
    addr := "0.0.0.0:8249"

    LUTE_ENGINE_URL 的 host 改成 lute-http 容器的 ip,
    addr 的 host 改成 0.0.0.0
    这样就成功了.

    希望可以在创建容器的时候动态指定 LUTE_ENGINE_URL 的 host.
    lute-http 的 main.go 改一下 addr := "0.0.0.0:8249"

    1 回复
    1 操作
    zhoujin7 在 2019-09-21 21:19:11 更新了该回帖
  • zhoujin7 1
    作者

    试了一下 lute-http 效果不错

  • 88250 1

    感谢帮忙做实验,稍后我会更新下 Solo 以支持容器化使用 Lute HTTP。主要修改点是支持传入启动参数来指定 Lute HTTP 的接口地址(请关注这里)。

    Lute HTTP 本身应该不用监听所有网卡(即不用使用 0.0.0.0),可以用 docker -p 来暴露端口。

  • Lute HTTP 的 Docker 镜像已经制作好了,欢迎帮忙进行测试:docker pull b3log/lute-http

    1 回复
  • zhoujin7
    作者

    好的 100% 好的

  • 感谢反馈,已经修复 ❤️

    1 回复
  • zhoujin7
    作者

    没啥效果.
    这个 lute-http 容器监听 0.0.0.0:8249
    然后在 solo 容器中, nc -zv 172.28.0.5 8249 端口是开放的

    docker run -d -p 8249:8249 \ --network mynetwork --ip 172.28.0.5 --dns 114.114.114.114 \ --name lute-http \ --restart=always \ b3log/lute-http registry.cn-shenzhen.aliyuncs.com/jin7/lute-http docker run -d \ --name solo \ --network mynetwork --ip 172.28.0.6 --dns 114.114.114.114 \ -e "VIRTUAL_HOST=hostname.com" \ -e "LETSENCRYPT_HOST=hostname.com" \ -e RUNTIME_DB="MYSQL" \ -e JDBC_USERNAME="root" \ -e JDBC_PASSWORD="nonpassword" \ -e JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \ -e JDBC_URL="jdbc:mysql://172.28.0.3:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ --restart=always \ b3log/solo --listen_port=8080 --server_scheme=https --server_host=hostname.com --server_port --lute_http=http://172.28.0.5:8249

    后面指定--lute_http=http://172.28.0.5:8249 还是--luteHttp= 或--LUTE_HTTP 都没效果.
    docker exec -it solo sh, 进 solo 容器改了 solo.properties 也没用.

    1 回复
  • 代码还有点 bug 刚刚又进行了一次修复,麻烦重新拉取 Solo 镜像,参数 --lute_http=
    不好意思浪费你时间了 🙏

  • CodingOX via macOS

    刚更新这个东东,我发现我的 docker 也没有生效,该如何设置。。。

    1 回复
  • zhoujin7
    作者

    建议放弃.

    1 回复
  • 呃,现在还有配置方面的问题吗?

    1 回复
  • zhoujin7
    作者

    [org.b3log.solo.util.Markdowns:159]: Failed to use [Lute] for markdown
    Connection refused (Connection refused)

  • zhoujin7
    作者

    不如 solo 内置 lute-http 没这么多麻烦

    1 回复
  • 88250 4 评论

    先启动 Lute HTTP 容器再启动 Solo,然后看下 Solo 的启动日志,如果里面有 luteAvailable 的话说明参数是对的。然后访问博客如果出现异常那可能还是网络不通导致哦。

    我也想内置,问题是好像内置不了,Lute 是 golang 写的 🤣

    luteAvailable true, 网络也是通的
    zhoujin7
    一个容器貌似可以跑多个服务的吧
    zhoujin7
    @zhoujin7 奇怪了,这两项都 OK 的话应该不会 Connection refused 的。Docker 容器进程可以启子进程,但是最好还是一个容器对应一个进程好些。我觉得可能 Docker Compose 更适合些,不过暂时没时间做。
    88250
    @88250 docker compose 貌似也不能解决这个问题. 真的能解决这个问题么? 我已经整合两者到一个容器了. 用了 monit 可以设置进程依赖关系. 而且程序比较小
    zhoujin7
  • zhoujin7
    作者

    通过使用 monit, 成功整合 Solo 和 lute-http 到一个容器, 非常好, 有需要的联系我 @ 邮件: image.png😂 😂

    @CodingOX
    image.png
    image.png
    image.png

请输入回帖内容 ...

推荐标签 标签

  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 442 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 415 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1794 回帖 • 2 关注
  • Anytype
    3 引用 • 31 回帖 • 13 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    87 引用 • 139 回帖 • 1 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 3 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 99 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 740 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 590 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 7 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 298 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 548 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 79 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 400 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 132 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 1 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖