MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    Dockerfile for mirai-api-http v2

    其他项目发布
    3
    6
    796
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • EE0000
      EE0000 最后由 EE0000 编辑

      Dockerfile for mirai-api-http v2

      Mirai 与 mirai-api-http 的 Dockerfile

      使用了 Eclipse OpenJ9 JVM 以减少内存占用。

      运行方法

      目录准备

      Mirai 将登录信息,还有 Mirai 与 mirai-api-http 的配置文件,保存在 bots 与 config 文件夹中。

      在镜像中,这两个文件夹分别位于 /app/bots 与 /app/config 中。

      建议将这些信息保存到容器外部。

      新建文件夹:

      mkdir mirai
      mkdir mirai/bots
      mkdir mirai/config
      

      使用 Docker 运行

      在刚刚建立的 mirai 目录中,运行:

      docker run \
          --name mirai \
          -v "$PWD"/bots:/app/bots \
          -v "$PWD"/config:/app/config \
          -p 8080:8080 \
          -it \
          zhaozuohong/mah
      

      使用 Docker Compose 运行

      将以下内容保存到 mirai/docker-compose.yml 文件中:

      version: "3"
      
      services:
        mirai:
          image: zhaozuohong/mah
          container_name: mirai
          stdin_open: true
          tty: true
          volumes:
            - ./bots:/app/bots
            - ./config:/app/config
          ports:
            - "8080:8080"
      

      随后使用 docker-compose up -d 运行。

      设置 mirai-api-http

      mirai-api-http 的设置文件在 mirai/config/net.mamoe.mirai-api-http/settings.yml 。

      注意 adapterSettings 下的设置,是 mirai-api-http 在容器中的网络设置。因此,host 应该写 0.0.0.0,端口保持 8080 即可。

      如果想让 mirai-api-http 绑定其它端口在 8080 以外的端口运行,不需要修改 mirai-api-http 的端口设置,只要修改 Docker 命令或者 docker-compose.yml 文件即可。

      例如,在 3000 端口运行:

      docker run \
          --name mirai \
          -v "$PWD"/bots:/app/bots \
          -v "$PWD"/config:/app/config \
          -p 3000:8080 \
          -it \
          zhaozuohong/mah
      

      或使用 Docker Compose :

      version: "3"
      
      services:
        mirai:
          image: zhaozuohong/mah
          container_name: mirai
          stdin_open: true
          tty: true
          volumes:
            - ./bots:/app/bots
            - ./config:/app/config
          ports:
            - "3000:8080"
      

      容器相关的操作

      连按 Ctrl-P Ctrl-Q,将容器转为后台运行。可通过 docker logs mirai 查看输出,或使用 docker attach mirai 再次连接容器。

      1 条回复 最后回复 回复 引用 1
      • M
        MyBaron 最后由 编辑

        你好,请问访问8080端口。拒绝连接呢?我是在宿主机发起请求的
        curl -X POST -H "Content-Type: application/json" -d '{"verifyKey": "xxxx"}' http://127.0.0.1:8080/verify
        curl: (7) Failed connect to 127.0.0.1:80; 拒绝连接

        wssy001 1 条回复 最后回复 回复 引用 0
        • wssy001
          wssy001 ⭐2021⭐ @MyBaron 最后由 编辑

          @mybaron docker ps -a 看一下你部署的服务有没有映射端口。docker logs <name>查看一下容器日志

          M 2 条回复 最后回复 回复 引用 0
          • M
            MyBaron @wssy001 最后由 编辑

            @wssy001 我映射了

            zhaozuohong/mah "/app/mcl" 2 hours ago Up 3 minutes 0.0.0.0:8080->8080/tcp mirai

            1 条回复 最后回复 回复 引用 0
            • M
              MyBaron @wssy001 最后由 编辑

              @wssy001 容器日志也正常

              2021-12-26 07:07:30 I/http adapter: >>> [http adapter] is listening at http://localhost:8080

              1 条回复 最后回复 回复 引用 0
              • M
                MyBaron 最后由 编辑

                我解决了。需要修改一下 http 的配置。
                将 host 改为 0.0.0.0 。默认是 localhost

                1 条回复 最后回复 回复 引用 0
                • 1 / 1
                • First post
                  Last post
                Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact