当初の予定
- 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.mod
と go.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 触ってみた
上記参考にしつつ 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勉強チャレンジは終了した。