[Windows]ngrokを利用して一時的にLaravel環境のあるDockerMachineを外部公開する
- 2020.02.14
- Web
下記のLineBotを使ったチュートリアルを実施中に、ngrokという一時的に外部から通信できるツールがあることを知りました。
Teckpit Laravelで飲食店検索LINE Botを作ろう!
そのあまりの便利さに驚いたので、ご紹介したいと思います。
Windowsでngrokを使うためにはどうしたらいいのだろう、
LaradockでLaravel環境を構築したのだけれど、一時的に外部から通信できるようにするにはどうしたらいいのだろうといった方向けにまとめてみました。
環境
・PC : Windows home 10
・docker: version19.03.1(docker toolbox)
・Laradock
・Laravel: version6.12.0
・nginx: version1.17.7
前提として、既にLaravelの環境が構築できているものとします。
LaravelでHelloWorldの画面を出力させるソースコードの準備
今回は、HelloWorldの画面を出力させることで、外部と通信ができることを
確認したいと思います。
<?php
Route::get('/hello', 'HelloController@index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return view('hello');
}
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>laravel-linebot</title>
<link rel="stylesheet" type="text/css" href="./css/style.css">
</head>
<body>
<h1>HelloWorld</h1>
</body>
</html>
ポートフォワーディングの設定下準備
まずは、Dockerのターミナルを開きます。
ターミナルを起動すると以下の画面が表示され、DockerMachineにIP 192.168.99.100が割り振られたことを確認できます。
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
フォルダ構成は以下のようにします。project-folderに移動します。
srcがLaravelの格納場所になります。
project-folder
|-laradock
|-src
$ ls
laradock/ src/
laradockに移動して、コンテナを起動します。
$ cd laradock
$ docker-compose up -d nginx
Starting laradock_docker-in-docker_1 ... done
Starting laradock_workspace_1 ... done
Starting laradock_php-fpm_1 ... done
Starting laradock_nginx_1 ... done
ポートの確認をします。nginxは80番ポートで通信していることがわかります。
ちなみにlaradockにあるenvファイルの247行目あたりでポート番号の変更をすることができます。
### NGINX #################################################
NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=443
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4ba84c4863c laradock_nginx "/bin/bash /opt/star…" 4 hours ago Up 59 seconds 0.0.0.0:80-81->80-81/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1
3cdd9892ea0e laradock_php-fpm "docker-php-entrypoi…" 14 hours ago Up 59 seconds 9000/tcp laradock_php-fpm_1
e63ce5360c8d laradock_workspace "/sbin/my_init" 14 hours ago Up 59 seconds 0.0.0.0:2222->22/tcp laradock_workspace_1
ポートフォワーディングの設定
ローカルホストからDockerMachine(192.168.99.100)にポートフォワーディングする設定を追加します。
$ netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=80 connectaddress=192.168.99.100
ポートフォワーディング の設定の確認をします。
$ netsh interface portproxy show v4tov4
ipv4 をリッスンする: ipv4 に接続する:
Address Port Address Port
--------------- ---------- --------------- ----------
127.0.0.1 80 192.168.99.100 80
ngrokのインストール
こちらのサイトからngrokを任意のフォルダにインストールして、
解凍します。
ngrokの起動
コマンドプロンプトなどでngrok.exeのあるフォルダまで移動して起動します。
>dir
・
・
略
・
・
2020/02/14 06:31 <DIR> .
2020/02/14 06:31 <DIR> ..
2020/02/14 06:31 26,757,632 ngrok.exe
>ngrok http 80
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://4350××××.ngrok.io -> http://localhost:80
Forwarding https://4350××××.ngrok.io -> http://localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
HelloWorldの画面確認
上記で割り当てられた「http://4350××××.ngrok.io」を使用して、/helloにアクセスします。
HelloWorldが出力されたらOKです。
ポートフォワーディング の設定削除
こちらはctrl + C でngrokを停止することができます。
ngrokのアドレスは起動する毎に変更されます。
>ngrok http 80
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://4350××××.ngrok.io -> http://localhost:80
Forwarding https://4350××××.ngrok.io -> http://localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
下記のコマンドでポートの設定の削除とその確認をすることができます。何も表示されないことを確認してください。
>netsh interface portproxy delete v4tov4 listenport=80 listenaddr=127.0.0.1
>netsh interface portproxy show v4tov4
参考ページ
Windowsでポートフォワーディングする方法
https://kagasu.hatenablog.com/entry/2018/01/29/184205Docker Machineで構築した環境に実機端末でアクセスする 新
https://qiita.com/horikeso/items/87ebd3722039dc7b0c21まとめ
ngrokを利用することで、こんなに簡単にローカル環境で外部と通信できるんですね。みなさんもぜひ使ってみてくださいね。
少しでも参考になれば幸いです。以上です。
-
前の記事
【体験談】毎日ジョギングを3ヶ月継続した結果実感した効果を3つ上げてみる 2020.02.12
-
次の記事
【まとめ】走ることを習慣化させるために必要なこと3選 2020.02.20