もくもく会に参加しています

  • このエントリーをはてなブックマークに追加

もくもく会に来ています。

Haskell をやるつもりが blog.mizukmb.net の Docker 周りを整備していました。 blog.mizukmb.net の Dockerize については以下の記事を御覧ください。

blog.mizukmb.net on Docker

さて、今回行ったことは以下のとおりです。

  1. サーバ内ディレクトリ構成の変更
  2. リバースプロキシコンテナの配置
  3. mizukmb.net の Dockerize

順を追って説明します。

1. サーバ内ディレクトリ構成の変更

blog.mizukmb.net が動いてる Docker は ECS や GKE といったサービスに乗っかっておらず、 ConoHa の VPS 上で起動した Docker + docker-compose によるコンテナ管理を行っています。

私が Docker をよく知らずに blog.mizukmb.net の Dockerize を進めたために、ファイルやディレクトリの構成がめちゃめちゃになっていました。 docker-compose.yml が至るディレクトリに存在し、全てのコンテナを起動するには2つの docker-compose.yml から起動する必要があったりとアンチパターンを踏み倒した構成でした。

これを1つの docker-compose.yml で blog.mizukmb.net に関わるコンテナ全てを起動できるように整理しました。これでコンテナを起動・破棄したい時に迷うことが無くなりました。

2. リバースプロキシコンテナの配置

元々やりたかったことはこれだったんですが、前述の通りディレクトリ構成がめちゃめちゃだったためにコンテナを増やすのは至難の業でした。今回これをいい感じに解決できたので blog.mizukmb.net コンテナの前段にリバースプロキシコンテナを配置する構成に変更しました。

new blog.mizukmb.net

リバースプロキシをかませることで、 blog.mizukmb.net 以外のコンテンツを同一の docker-compose.yml で管理できるようになります。

3. mizukmb.net の Dockerize

mizukmb.net という謎サイトがあるのですが、こちらを Dockerize しました。

成果物: mizukmb/mizukmb.net

元々は github.io でホスティングして mizukmb.net の CNAME にしていたのですが、 github.io の仕様上 HTTPS には対応しておらず HTTP のみアクセスできる状態でした。 CDN を間に挟むことで HTTPS 化はできますがまあせっかくなので Dockerize して自前でホスティングする運用に変更しました。

この作業にかなり手間取りました。 Docker よりも Nginx の挙動がわからず、 mizukmb.net にアクセスしているのに blog.mizukmb.net が読み込まれたりして何でだろうずっと悩み続けていました。最終的に server_name ディレクティブを正規表現使って厳しく見るようにしたり default_server をつけたらうまく動くようになりました(いいのかな…)。

まあでもようやく HTTPS 化もできたので良しとします。

まとめ

Haskell は全く進みませんでしたが、やろうやろうと思い続けてた作業が片付いて良かったです。