使用 Docker Compose 部署 ngrok 内网穿透服务及常见问题解决

前言

ngrok 是一个强大的内网穿透工具,可以将本地服务暴露到公网,方便调试和分享。通过 Docker Compose 部署 ngrok 可以简化配置和管理过程。然而,在实际操作中,可能会遇到一些配置问题。本文将详细介绍如何使用 Docker Compose 部署 ngrok,并解决常见的错误。


1. 准备工作

在开始之前,请确保以下环境已安装:

  • Docker

  • Docker Compose


2. 配置文件

2.1 docker-compose.yml 文件

以下是 docker-compose.yml 文件的配置:

yaml

复制

services:
  ngrok-tunnel:
    image: ngrok/ngrok:latest  # 使用最新的 ngrok 镜像
    container_name: ngrok-tunnel  # 容器名称
    environment:
      - NGROK_AUTHTOKEN=****** # 设置 ngrok 认证令牌
    ports:
      - "4040:4040"  # 映射 ngrok 的 Web 管理界面到宿主机
    volumes:
      - D:\ngrok\logfile\ngrok.log:/var/log/ngrok.log  # 挂载日志文件到容器内标准日志路径
      - D:\ngrok\ngrok.yml:/etc/ngrok/ngrok.yml  # 挂载自定义配置文件到容器内标准配置路径
    command: start --config /etc/ngrok/ngrok.yml --log /var/log/ngrok.log --log-format json my-tunnel  # 指定隧道名称
    restart: unless-stopped  # 设置容器自动重启策略

2.2 ngrok.yml 配置文件

以下是 ngrok.yml 文件的配置:

yaml

复制

version: "2"  # ngrok 配置文件的版本
authtoken: ******  # 替换为你的 ngrok 认证令牌
tunnels:
  my-tunnel:  # 隧道名称
    addr: #.#.#.#:2342  # 本地服务的地址和端口
    proto: http  # 协议类型
    schemes:  # 指定支持的协议(http 或 https)
      - http
      - https

将上述配置文件保存到 D:\ngrok\ngrok.yml


3. 启动服务

  1. 在 D:\ngrok 目录下,运行以下命令启动服务:

    bash

    复制

    docker-compose up -d
  2. 查看日志,确认服务是否正常运行:

    bash

    复制

    docker-compose logs ngrok-tunnel

4. 常见问题及解决方法

4.1 错误:version 属性已过时

错误信息:

复制

level=warning msg="D:\\ngrok\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"

解决方法:
移除 docker-compose.yml 文件中的 version 属性。


4.2 错误:version 属性缺失

错误信息:

复制

ERROR:  Error reading configuration file '/etc/ngrok/ngrok.yml': `version` property is required.

解决方法:
在 ngrok.yml 文件中添加 version: "2"


4.3 错误:bind_tls 字段无效

错误信息:

复制

ERROR:  Error reading configuration file '/etc/ngrok/ngrok.yml': YAML parsing error: yaml: unmarshal errors:
  line 7: field bind_tls not found in type config.HTTPv2Tunnel

解决方法:
移除 ngrok.yml 文件中的 bind_tls 字段,并使用 schemes 字段指定支持的协议。


4.4 错误:未指定隧道

错误信息:

复制

ERROR:  You must specify at least one endpoint or tunnel to start.

解决方法:
确保 ngrok.yml 文件中正确配置了隧道,并在 docker-compose.yml 的 command 参数中指定隧道名称。


5. 验证服务

  • 访问 http://localhost:4040,查看 ngrok 的 Web 管理界面。

  • 检查日志文件 D:\ngrok\logfile\ngrok.log,确保没有错误信息。


6. 总结

通过 Docker Compose 部署 ngrok 可以大大简化内网穿透服务的配置和管理。本文详细介绍了配置文件的编写方法,并提供了常见问题的解决方案。如果你在部署过程中遇到其他问题,欢迎在评论区留言讨论!


参考文档:


版权声明:
本文为 CSDN 博主原创文章,转载请注明出处。
作者:[你的名字]
原文链接:[你的博客链接]


希望这篇博客对你有帮助!如果有其他问题,欢迎随时交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CarlowZJ

我的文章对你有用的话,可以支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值