[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
是我的问题,还是可以通过修改脚本(在仓库中)来解决?
答案 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
网络下。我相信,您应该传递给容器执行的唯一参数是 image
、ports
、environment
和服务器容器的 DOMAIN 和 PORT、link
和您的网络容器上的 expose
:
# docker-compose.yml
ngrok:
image: shkoliar/ngrok
ports:
- 4551:4551
links:
- web
networks:
- development
environment:
- DOMAIN=squad_web
- PORT=3000