使用 docker 在容器中运行 Ngrok

Adw*_*hna 8 docker ngrok

[ https://github.com/gtriggiano/ngrok-tunnel ] 在容器内运行 ngrok。为了避免安全风险,需要在容器中运行 Ngrok。但是在运行生成 url 的脚本后遇到了问题

$ docker pull gtriggiano/ngrok-tunnel


$ docker run -it  -e "TARGET_HOST=localhost" -e "TARGET_PORT=3000" -p 4040 gtriggiano/ngrok-tunnel
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 我在 localhost:3000 上运行我的 rails 应用程序

是我的问题还是可以通过更改脚本(在 repo 内)来解决?

BT6*_*643 5

我现在开始收到以下错误,因此这个答案可能不再适合您:Your ngrok-agent version "2.3.29" is too old. The minimum supported agent version for your account is "2.3.35". Please update to a newer version with ngrok update, by downloading from https://ngrok.com/download, or by updating your SDK version.


我无法让它工作,但切换到https://github.com/shkoliar/docker-ngrok并且它工作得非常好。

就我而言,我将其添加到我的 docker-compose.yml 文件中:

ngrok:
    image: shkoliar/ngrok:latest
    ports:
      - 4551:4551
    links:
      - web
    environment:
      - PARAMS=http -region=eu -authtoken=${NGROK_AUTH_TOKEN} localdev.docker:80
    networks:
      dev_net:
        ipv4_address: 10.5.0.10
Run Code Online (Sandbox Code Playgroud)

当我这样做的时候,一切都从其他事情开始docker-compose up -d

然后有一个 Web UI,位于 http://localhost:4551/,您可以查看状态、请求、ngrok URL 等。

Github 页面也有从命令行手动运行它的示例,而不是通过 docker-compose:

命令行示例 下面的示例假设您正在运行名为 dev_web_1 并公开端口 80 的 Web 服务器 docker 容器。

docker run --rm -it --link dev_web_1 shkoliar/ngrok ngrok http dev_web_1:80

通过命令行使用,ngrok 会话处于活动状态,直到它不会被 Ctrl+C 组合终止。


v_s*_*ukt 2

不。如果您使用单个数字执行 -p,则容器端口 - 主机端口是随机分配的。在 docker run 中使用 -p, --publish ip:[hostPort]:containerPort 可以指定主机端口和容器端口。

截至目前,4040个容器已暴露。不确定您的服务是否默认侦听它。

获取本地主机端口执行

docker ps
Run Code Online (Sandbox Code Playgroud)

你会看到它没有监听的实际端口。

CONTAINER ID        IMAGE                     COMMAND             CREATED              STATUS              PORTS                     NAMES
1aaaeffe789d        gtriggiano/ngrok-tunnel   "npm start"         About a minute ago   Up About a minute   0.0.0.0:32768->4040/tcp   wizardly_poincare
Run Code Online (Sandbox Code Playgroud)

这里它正在监听本地主机:32768