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

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

容器中的 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

    刚更新这个东东,我发现我的 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

请输入回帖内容 ...

推荐标签 标签

  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖
  • Love2D

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

    14 引用 • 53 回帖 • 513 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 42 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 108 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 2 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 7 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 8 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 194 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • OnlyOffice
    4 引用 • 23 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 643 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 462 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 1 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 421 回帖
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 45 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 598 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    40 引用 • 24 回帖
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 443 关注
  • 房星科技

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

    6 引用 • 141 回帖 • 559 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 626 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 20 关注