使用Docker在容器中运行Ngrok

时间:2018-12-04 12:21:36

标签: 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

enter image description here 在本地主机上运行我的rails应用程序:3000

是我的问题,还是可以通过修改脚本(在仓库中)来解决?

3 个答案:

答案 0 :(得分:2)

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

截至目前,

容器4040已暴露。不确定您的服务是否默认监听。

要获取本地主机端口,请执行

docker ps

您将看到未监听的实际端口。

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

这里是在localhost:32768上监听

答案 1 :(得分:1)

我无法正常工作,但切换到 https://github.com/shkoliar/docker-ngrok 并且效果很好。

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

ngrok:
    image: shkoliar/ngrok:latest
    ports:
      - 4551:4551
    links:
      - web
    environment:
      - PARAMS=http -region=eu localdev.docker:80
    networks:
      dev_net:
        ipv4_address: 10.5.0.10

当我做docker-compose up -d

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

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

<块引用>

命令行示例 下面的示例假设您已运行 名为 dev_web_1 的 Web 服务器 docker 容器,具有暴露的端口 80。

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

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

答案 2 :(得分:0)

我不确定您是否已经解决了这个问题,但是当我收到此错误时,我只能这样解决:

# docker-compose.yml

networks:
  - development

我还需要公开我的 Web 容器的 3000 端口,因为它还没有公开。

# docker.compose.yml

web:
  expose:
    - "3000"

我在开发中运行的服务器的容器也在 development 网络下。我相信,您应该传递给容器执行的唯一参数是 imageportsenvironment 和服务器容器的 DOMAIN 和 PORT、link 和您的网络容器上的 expose

# docker-compose.yml

  ngrok:
    image: shkoliar/ngrok
    ports:
      - 4551:4551
    links:
      - web
    networks:
      - development
    environment:
      - DOMAIN=squad_web
      - PORT=3000