Windows10再インストールから開発環境(Docker)を作り直すまでの手順【メモ】

docker
2022年元旦になぞのパソコンクラッシュからのWindows10再インストールを強いられることになり、開発環境を再構築することになったのでその手順まとめ。開発環境は全てDocker上に構築されており、必要な情報は全てDockerfileおよびdocker-compose.ymlに記載されていることが前提です。また、手順は当然Dockerのインストールから始まります(Windows Updateは適用済み)。






Dockerをインストールする

Dockerをインストールします。特に変わったことはありません。

Get Started with Docker | Docker


WSL2をインストールする

Docker for Windowsをインストールして再起動すると、WSLがないと怒られるのでインストールします。調べた情報では「wsl_update_x64.msi」を実行してアップグレードすればOKということで、元あったファイルを使ってインストールしたんですけど、今現在はPowerShellでコマンドを叩くだけで完了するみたいです。


Microsoftの公式ページを調べたところ、

最新のWindows 10 のバージョン 2004 以降 (ビルド 19041以降)または Win 11では、WSL2のインストールがめちゃくちゃ簡単になっていて、管理者権限でPowerShellを開いて以下のコマンドを実行するだけでした。

wsl --install

WindowsにWSL2とDockerをインストールする手順 | カフーブログ



proxyサーバを構築する

ローカル環境ではproxyサーバを使って振り分けをしているので、まずそれを構築します。

ローカルのDockerで複数サービスを動かしproxyでドメインを捌くようにしてみた – NOBODY:PLACE



証明書を再発行する

ここでSSL関連のエラーが出るので証明書を再発行しておきます。オレオレ証明書の発行は例によってmkcertで。

Chocolateryをインストールする

Windows用のパッケージマネージャーです。

Windows10にChocolateyをインストールする – Qiita


PowerShellでコマンドを叩くだけで行けます。

mkcertをインストールする

下記コマンドを実行してください。

Windows10にmkcertをインストールする – Qiita


これまたPowerShellでコマンドを叩くだけで行けます。


証明書を発行する

例えばこんな感じ。

mkcert -cert-file app/ssl/shared.crt -key-file app/ssl/shared.key localhost 127.0.0.1 local local.com



サービスごとにコンテナを作成していく

サービスごとに順次コンテナを作成していきます。僕の場合、proxyやMailHog含めて全部で5つかな。

docker-compose up --build -d



必要に応じてhostsにドメインを追加する

proxyで捌きたいドメインはhostsに登録する必要があります。デフォルトだとhostsファイルへの書き込み権限がないのでそれを付与しつつ、捌きたいドメインをhostファイルに追加していきます。これで元の環境が整いました。簡単!



関連記事

Vagrant上で動かしてた開発環境をDocker上で動かすようにしてみた(メモ) – NOBODY:PLACE
ローカルのDockerで複数サービスを動かしproxyでドメインを捌くようにしてみた – NOBODY:PLACE
【Docker】ローカル開発環境にMailHogを導入してみた – NOBODY:PLACE



再構築してみての感想

証明書に関しては本当に必要だったかどうかわかりませんが、サーバ環境のセットアップが全てDockfileとdocker-compose.ymlで完了してしまうのは便利以外の何ものでもありません。コマンドを打ち込んだあとは特に何もすること無く元の開発環境が戻ってきました。適切にセットアップさえしていれば、データも問題なしです。敢えて言うならDockerのインストールが一番手間掛かったかも。それぐらい手間掛かりませんでした。

これまでであればイメージを丸ごと保存しておくか、そうでない場合は必要な環境情報をメモっておいて順次インストールしていくという手段が必要だったんですけど、Dockerのおかげで環境情報を残しておけばワンクリックで同じ環境が再現出来るようになってめちゃくちゃ幸せになりました。もしDockerじゃなかったら仕事始めにはとても間に合ってない……素晴らしい時代ですね。


なんとかなってほんと良かった。