OSを再インストールしたので、開発環境がまっさらになってしまいました。
Windows環境なのでRubyとかPythonとか入れるの色々面倒なので、HerokuやGAE向けの開発環境自体をDockerベースで作れんかなと思ってはまったときの注意点
結論から書くとDocker上でGAEを扱うときは
root@..:/# goapp serve --host=0.0.0.0 /app
みたいな感じで
--host=0.0.0.0
をちゃんと指定しましょう。そうしないとDockerコンテナ上以外からアクセスできません。
Dockerおよびboot2docker/docker-machineを使っている場合、
forwardされてもlocalhost:8080になる訳ではなく、0.0.0.0になっています。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26e0e7b4eec5 koduki/dev-docker-gcp "/bin/bash" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp gloomy_knuth
なので、--hostの指定をしておかないと、下記のようなエラーがでます。
$ curl http://192.168.99.100:8080
curl: (7) Failed to connect to 192.168.99.100 port 8080: Connection refused
ちなみにboot2docker上からはこう
$ docker-machine.exe ssh default
...
docker@default:~$ curl http://localhost:8080
curl: (52) Empty reply from server
なので、"--host=0.0.0.0"を指定すると接続先IPが変わるので下記のように正常なレスポンスになります。
$ curl http://192.168.99.100:8080
Hello, world!
最初ACLやSELinux系を疑ってたのですがGAEを使ったのが昔過ぎて、このオプションの存在を完全に失念してました。
結構、開発モードとプロダクションモードでこの辺の設定がことなるフレームワークは多いので、まず注意するべきポイントですね。
それではHappy Hacking!