准备工作 域名解析 需要在你的域名提供商处增加条A记录解析到你的服务器 例如:*.ngrok.76peter.work这样你可以使用subdomain的方式,来实现穿透。

新建目录

#自己觉得用户文件夹下方便。。你们随意自己喜欢
mkdir ~/docker-room
cd ~/docker-room

新建Dockerfile和build shell

Dockerfile

FROM golang:1.7.1-alpine
ADD build.sh /
RUN apk add --no-cache git make openssl
RUN git clone https://github.com/inconshreveable/ngrok.git --depth=1 /ngrok
RUN sh /build.sh
EXPOSE 8081
VOLUME [ "/ngrok" ]
CMD [ "/ngrok/bin/ngrokd"]

build.sh

export NGROK_DOMAIN="ngrok.76peter.work"
cd /ngrok/
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

#我这里只生产linux64位和windows64位客户端需要其他的可以去查询
make release-server
GOOS=linux GOARCH=amd64 make release-client
GOOS=windows GOARCH=amd64 make release-client

构建命令 &启动 & 客户端启动

docker build -t ngrok .

#启动容器
docker run -it  -p 8081:8081 -p 4443:4443 -v /root/docker/ngrok/bin:/root/ngrok/bin/ -d ngrok /ngrok/bin/ngrokd -domain="ngrok.76peter.work" -httpAddr=":8081"

#寻找客户端
docker inspect (容器id)
#客户端位置
Mounts节点——>Source目录中的bin目录中可以找到编译出来的二进制客户端文件

用FTP下载客户端文件

本地新建文件夹ngrok存放客户端

相同路径下新建配置文件

ngrok.cfg

server_addr: "ngrok.76peter.work:4443"
trust_host_root_certs: false

peterNgrok启动工具.bat

@echo OFF
color 0a
Title peterNgrok启动工具 by:peter
Mode con cols=109 lines=30
:START
ECHO.
Echo                  ==========================================================================
ECHO.
Echo                                         peterNgrok客户端启动工具
ECHO.
Echo                                         作者:peter 412044923
ECHO.
Echo                                         官方QQ群:
ECHO.
Echo                                         官方论坛:建设中
ECHO.
Echo                                         更多版本:暂无
ECHO.
Echo                  ==========================================================================
Echo.
echo.
echo.
:TUNNEL
Echo               输入需要启动的域名前缀,如“aa” ,即分配给你的穿透域名为:“aa.ngrok.76peter.work”
ECHO.
ECHO.
ECHO.
set /p clientid=   请输入需映射前缀:
ECHO.
ECHO.
set /p port=   请输入需映射端口:
echo.
ngrok -config=ngrok.cfg -subdomain %clientid% %port%
PAUSE
goto TUNNEL

双击bat即可启动使用

可以自己按照步骤搭建,也可以在这里下载我安装好的

我的Ngrok

解压密码:76peter.work

文章参考: 使用Docker部署Ngrok实现内网穿透——by且听风吟