ブログ作業終了、そしてDocker Traefik | GGAMI.NET
ふぅ…カミネットのブログ作業が終わった…。インスタンス削除のせいで、なんて苦労をしているんだ…。
Dockerイメージを作らなきゃいけない時間なのに…ブログを書いている…

でも、もっとおかしいのは…ブラウザーに、カミネットのインスタンスを削除する前に書いていた記事が残っていたことだ…。
本来ならログインも解除されているはずだったのに…インスタンスが削除されて呼び出しができなくなったので、そこまではいかなかったようだ…
上で書いたように、現在はDockerを使ってサーバーを構築してみようとしているところだ…。
既存のLinuxサーバーで動いているサービスがあるので、このサービスは一時的にGCPへ移行し…すべてDockerに置き換えようと思っている…
でも、思ったよりDockerは、難しいといえば難しいけれど…一度覚えればすごく便利になりそうだと思う。
ただ、Linuxサーバーではウェブサーバーがいくつか動いているけれど、Dockerではコンテナごとにウェブサーバーを動かせるようになる…そうなると、どうやって複数を動かすのか…?と気になっていた。
それはまさに、「reverse proxy」というものを使うからだった。
実際、Docker Hubにはリバースプロキシを提供するイメージがある。
しかし、上記のようなリバースプロキシ用のイメージを使う場合、あるいはリバースプロキシを利用するコンテナを自分で作った場合(?)には、問題があるそうだ。
それは、Docker Swarmを使えないということだった。
もちろん、分散だのロードバランシングだのといった作業が必要になるほどのサービスを運営しているわけではない…。でも、せっかくやるのだから…できるだけ変わりうる要素を考慮して作業したほうがいいのではないかと思い…調べてみたところ、見つけたのがこちら。
このサービスは上の図のように、同じドメインにアクセスがあったときにロードバランシングをしてくれるほか、Docker Swarmにも対応している。
どのドメインからアクセスされたかに応じて、そのサービスに合ったコンテナに接続してくれる。
だから、「reverse proxy」を直接使ってもいいけれど、むしろTraefikを利用するほうがいいと思った。(分散+リバースプロキシ)
というわけで、まずは現在サービスを開発・運用する環境のイメージを作り、その後、開発や作業を進めながら、LinuxにDockerをインストールしてからTraefikを設定してみようと思う。
- Traefik(分散およびリバースプロキシ)
- MYSQLコンテナ(外部ボリュームを使用)
- Redisコンテナ(外部ボリュームを使用)
- Mongodbコンテナ(外部ボリュームを使用)
- コインネットのフロントエンド(Nuxt.js)
- コインネットのバックエンド(Laravel)
- コインネットのNode.jsソケットサーバー1..2..3..4....
- 画像サーバーAPI(Laravel Lumen)
- 既存1
- 既存2
思ったよりこんなにたくさんある…。
既存1、既存2、コインネットについては、どれも個別のDBを用意せず、該当するDBコンテナに接続する予定だ。
サービスが大規模なら、本来は分けて運用するのが正しいのだろうけれど、実際のところ、私が運営しているサービス自体は大きくないし…大きくなったら、そのときに作業するほうがいいと思う…。
(それに、コインネット-DBコンテナ1、既存1-DBコンテナ2、既存2-DBコンテナ3のように別々のDBコンテナにつなぐとしたら、作業するときどれだけ大変だろうか…。Navicatであちこち接続するのも簡単ではないと思う)
ともあれ、この件については、次に作業するときにもっと詳しく書いてみようと思う。