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

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

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

请输入回帖内容 ...

推荐标签 标签

  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 2 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1057 回帖 • 1 关注
  • OkHttp

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

    16 引用 • 6 回帖 • 64 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 4 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 62 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 74 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    32 引用 • 135 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • TextBundle

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

    1 引用 • 2 回帖 • 49 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖 • 2 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 733 关注
  • GraphQL

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

    4 引用 • 3 回帖 • 9 关注
  • 电影

    这是一个不能说的秘密。

    121 引用 • 599 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 131 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 553 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 2 关注
  • 外包

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

    26 引用 • 232 回帖 • 4 关注
  • 大疆创新

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

    2 引用 • 14 回帖
  • ActiveMQ

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

    19 引用 • 13 回帖 • 673 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    133 引用 • 189 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 638 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 3 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 职场

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

    127 引用 • 1705 回帖