日記: 2021年のGWにやりたかったこと

当初の予定

  • Go に入門してみたい
  • Docker に入門してみたい
  • DB なんか作ってみたい

って感じの気持ちがあったので、とりあえず Docker + Go ( gorilla/mux + GORM ) + MySQL って感じの何かを作ろうとした

やったこと

とりあえず gorilla/mux さわってみた

みたチュートリアルはこれ

https://tutorialedge.net/golang/creating-restful-api-with-golang/

WSL1 の環境に go 入れたか入ってたか忘れたけど、いくつか VSCode のエクステンションいれた程度で環境構築ヨシ!という感じで深く調べずに走り出してみた。
とりあえずすごく単純でわかりやすそうな上記のチュートリアルを見つけてきて、やってみた。

あと上記のチュートリアルだと触れてないけど、いろいろ調べてたら go mod を使うのが作法っぽいので go mod init <module_name> した。
なんか go.modgo.sum ができたので、依存モジュールの管理出来ている雰囲気を感じヨシとした。

Docker 環境構築に敗北した

自分の自宅でのメインPCは Windows で WSL1 でもろもろ普段やっているのだけれど WSL1 は Docker に対応していないらしいのでぐぬぬとなった。
WSL2からは Docker に対応しているらしくて、WSL1とWSL2の共存も可能らしいのだけれど、いろいろ調べてから環境構築すべきだし、慎重にやるべきだろうなーと思ったらめんどくさくなってきちゃって、いまやりたい本質でもないので、とりあえず AWS EC2 で立てちゃうことにした。

インスタンスタイプはだいたいこのくらい必要かなーってスペックで一番安そうな m5a.lerge にした。
ちなみに現在の情報だけれど、EBS は 30GB まで無料らしいので 30GB 以内にした。

Ubuntu 20.04 での Go のインストール

Go公式で案内している方法とは違う方法だけど sudo snap install go --classic でも入るっぽいし今回はコレで入れちゃった。

Docker Engine と Docker composr のインストール

以下を見て言う通りにしたら良い。

Install Docker Engine on Ubuntu | Docker Documentation

Install Docker Compose | Docker Documentation

Docker 触ってみた

zenn.dev

上記参考にしつつ Dockerfile なり docker-compose なりググった。
イメージの起動とかイメージにファイルを渡したりとかはぼんやりやれたんだけど、 Docker で起動した web アプリをブラウザから確認するところで苦戦して、結果としては まだブラウザから web アプリを閲覧できていない ので悲しい。

ブラウザで web アプリを確認するためにやったこと

  • Docker コンテナのポートをホストのポートにマッピングできているか確認

nc -vz localhost 10000 で確認した。これは成功していたので、マッピングはできていると認識した。
また ss -antu で 10000 が LISTEN していることも確認した。

  • AWSマネジメントコンソールからEC2のセキュリティグループにルールを追加した

カスタム TCP ルールで 10000 番を許可するように設定をした。一応その後マシンの再起動をした。

  • ローカルから nc -vz <hostnamme> 10000 で接続確認した

これが通らなかった。もちろん http://<EC2のIPアドレス>:10000 も閲覧できない。
そしてここを通そうとしているときに「EC2マネジメントコンソールからの再起動、IP変わらなかったしやけに早かったしなんか信頼できないから、停止→開始をすべきなのでは?」と思って、やろうとしたら間違えて終了(実質の削除)をして環境を吹っ飛ばしてしまったので、萎えてここで私のGW勉強チャレンジは終了した。

今後

  • EC2 に環境立てると起動している間お金かかるしやっぱ WSL2 環境整備するか、VM気軽に立てられる環境整備したい
    • 自分 VM ぽこぽこ立てるときのお供は Vagrant くらいしか存じ上げないんだけど、他に何かトレンドはあるのだろうか
  • EC2 でやるならせめて終了処理への保護をしたほうがいい