どうもbzyです。今回はGCP(Google Cloud Platform)のVMインスタンスで作成したCentOS7環境にdockerコンテナでアプリ環境を構築し外部にwebアプリを公開し実際にHTTP接続できるところまでで色々なつまずきがあったのでその備忘録となります。
私自身今回初めてdockerにてサービスを公開したこともあり、
設定等に不備や不足があるかもしれませんのであくまで参考として捉えていただければ幸いです。
GCPにて初めてサービス公開する方が対象かと思います。
また、今回サービス公開するにあたりGCPを無料で使っています。(2020/05時点)
無料で使い倒す記事はこちらを参考にしました。とても参考になりました。
VMインスタンスの作成やdocker-composeの記載については省略します。
サーバ構成
借りたサーバは使い慣れているのでCentOS7にしました。
debian系でもよかったのかなぁと思っています。
cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
ちなみに無料枠だとメモリが0.6GBしかもらえません。
それでも無料で使えるのはありがたいです。( ´∀`)
CentOS7 の上にdockerでwebサービスの環境を作ります。
nginx,php,mysqlの構成です。
今回はdocker-composeで構築しました。
サーバ構築
まずはGCPにssh接続してローカル環境と同じようにdocker-composeでコンテナをビルドしました。
docker-compose up -d
これでコンテナが立ち上がりサーバ環境が出来上がりました。
簡単ですね。
ちなみに、今回はlaravelというPHPフレームワークでwebアプリを公開しました。
gitからクローンしていい感じに配置しました。
ドメイン設定
外部に公開するためにドメインを取得しました。
今回は無料で済ませるためにtkドメインを使用しました。
こちらから飛べます。
設定の仕方は調べればすぐに出てくるかと思います。
※DNSサーバはGCPでも設定できるのですがGCPではお金が発生したのでtkドメインのサイトのものを使用することをお勧めします。
設定するだけで5円ほどかかりました。
最初GCPのDNSサーバを使用していましたがすぐに設定を解除してしまったため、そのままGCPで設定していたらどのくらい費用が発生するかは不明です。

DNS設定ができてドメインにpingを飛ばしてVMインスタンスの外部IPで通信していることが確認できればOKですね。
接続方法
ブラウザ→GCP→docker[nginx→php] という感じで接続するイメージです。
あとはwebブラウザから対象のドメインを入力して見れば接続できるはず( ´∀`)。。。。。あれ、できない(・Д・)
躓いた点
ここで色々ググってみた結果GCPの画面操作でぽちぽちすれば良いということが判明しました。
ググってわかったのか自己解決したのか鮮明に覚えていません。(・ω・)
とりあえず、何をしたかを記載していきます。
GCP上でファイアウォールの設定をする
GCPの管理画面からComputer Engine > VMインスタンスに移動します。

インスタンス名を押下します。

↑編集を押下

真ん中くらいにファイアウォールの項目があるので許可にチェックする
これでブラウザから接続してみると
キターーーーーーーーーーーー\( ˆoˆ )/
はいできました。
結論
GCP はコンソールよりも画面でぽちぽちした方が良いものなのかもしれません。
同じような境遇の方の参考になれば幸いです。以上でーす。