运行 容器中的 Ngrok 使用 docker
Running Ngrok in a container using docker
[https://github.com/gtriggiano/ngrok-tunnel ] 运行s 容器内的 ngrok。 Ngrok 需要在容器中 运行 以避免安全风险。但是在 运行 脚本生成 url
之后我遇到了问题
$ docker pull gtriggiano/ngrok-tunnel
$ docker run -it -e "TARGET_HOST=localhost" -e "TARGET_PORT=3000" -p 4040 gtriggiano/ngrok-tunnel
运行正在 localhost:3000
上安装我的 rails 应用程序
这是我的问题还是可以通过更改脚本(在存储库中)来解决?
没有。如果您使用单个数字执行 -p 它是容器端口 - 主机端口是随机分配的。
使用 -p, --publish ip:[hostPort]:containerPort at docker 运行 可以指定主机端口和容器端口。
截至目前容器4040已经暴露。不确定您的服务是否默认监听它。
获取localhost端口执行
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
我无法正常工作,但切换到 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
当我这样做时,其他一切都开始了 docker-compose up -d
然后在 http://localhost:4551/ 有一个网站 UI 供您查看状态、请求、ngrok URL 等
Github 页面确实有 运行 的示例,它也是从命令行手动执行的,而不是通过 docker-compose:
Command-line Example The example below assumes that you have running
web server docker container named dev_web_1 with exposed port 80.
docker run --rm -it --link dev_web_1 shkoliar/ngrok ngrok http dev_web_1:80
With command line usage, ngrok session is active until it
won't be terminated by Ctrl+C combination.
我不确定你是否已经解决了这个问题,但是当我遇到这个错误时,我只能这样解决它:
# 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
[https://github.com/gtriggiano/ngrok-tunnel ] 运行s 容器内的 ngrok。 Ngrok 需要在容器中 运行 以避免安全风险。但是在 运行 脚本生成 url
之后我遇到了问题$ docker pull gtriggiano/ngrok-tunnel
$ docker run -it -e "TARGET_HOST=localhost" -e "TARGET_PORT=3000" -p 4040 gtriggiano/ngrok-tunnel
这是我的问题还是可以通过更改脚本(在存储库中)来解决?
没有。如果您使用单个数字执行 -p 它是容器端口 - 主机端口是随机分配的。 使用 -p, --publish ip:[hostPort]:containerPort at docker 运行 可以指定主机端口和容器端口。
截至目前容器4040已经暴露。不确定您的服务是否默认监听它。
获取localhost端口执行
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
我无法正常工作,但切换到 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
当我这样做时,其他一切都开始了 docker-compose up -d
然后在 http://localhost:4551/ 有一个网站 UI 供您查看状态、请求、ngrok URL 等
Github 页面确实有 运行 的示例,它也是从命令行手动执行的,而不是通过 docker-compose:
Command-line Example The example below assumes that you have running web server docker container named dev_web_1 with exposed port 80.
docker run --rm -it --link dev_web_1 shkoliar/ngrok ngrok http dev_web_1:80
With command line usage, ngrok session is active until it won't be terminated by Ctrl+C combination.
我不确定你是否已经解决了这个问题,但是当我遇到这个错误时,我只能这样解决它:
# 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