沖縄チームのキリです。開発中のプロジェクトの実行環境はどのように用意しているでしょうか。私はこれまでXAMPPで動かしたりCygwinを入れてみたりVirtualBoxにLinuxの仮想環境を作ってChef(今検索したら公式サイトにアクセスできなくなっていました)、Ansibleといったプロビジョニングツールで仮想サーバーを構築したりと様々な手段を試してきましたが、現在ではDockerに落ち着きました。
他のツールと比較して
Dockerの何がいいのか、というのを簡潔にいうと
- 動作が軽快
- ソフトウェアバージョンの固定・変更がしやすい
- 複数人で同じ環境を容易に用意できる
- 実行環境を破壊しても簡単に復元できる
このあたりに尽きます。あっちのプロジェクトとこっちのプロジェクトで、あるいはAさんとBさんの環境でPHPのバージョン違うぞ!のような状況を解決してくれます。個人的な意見としてwindowsにあれこれインストールしてごちゃつくのがイヤ、コマンドプロンプト、PowerShellよりもBashの方が使いやすい、そもそもwindowsとLinux/mac間の相性が良くないのでmacユーザーや実際のサーバーとの差が気になるなどなどもあります…
Dockerをwindowsに導入する
とりあえずサクッと動かせる環境を用意しましょう。社内でDockerを広めるのが私の密かな目標です。
WSLを有効化
WSLが既に有効になっている場合は飛ばしてください。windows上でももちろんDockerを動かせますがwindowsでウェブサービスを開発するならWSL使わない選択肢は無いと思っています。なぜなら実際にウェブサービスをデプロイするのはLinuxサーバー上であることがほとんどだからです。一昔前はWSLを有効化するのも少し手順が必要でしたが今はコマンド一発です。PowerShellを管理者権限で開いて以下のコマンドを実行してください。
wsl --install
ただしインストール方法が今後変わらない保証はないので必ず公式のドキュメントを参照してください。
https://learn.microsoft.com/ja-jp/windows/wsl/install
デフォルトではwindowsアプリにUbuntuがインストールされます。初期設定は公式のベストプラクティス(https://learn.microsoft.com/ja-jp/windows/wsl/setup/environment#set-up-your-linux-username-and-password)を参考にLinuxユーザーの作成を行い、sudo apt update && sudo apt upgrade
コマンドを実行してパッケージを最新の状態に更新してください。デフォルトでWSLのパッケージは自動で更新されないのでパッケージを更新する際にはこのコマンドを都度実行します。
パスワードなしでsudoコマンドを実行できるようにする
sudoコマンドを実行したときにパスワードの入力を求められましたか?WSLで開発をしていると案外ここがストレスになってきます。本番環境等ではセキュリティを考慮してユーザー権限の設定をする必要がありますがローカルマシンのWSL上でガチガチに固める必要はないかと思っています。(不特定多数で1台のwindowsを共有して開発しているような状況はあまり考えられないので…)なのでsudoコマンドをパスワードなしで実行できるように設定していきましょう。
デフォルトエディタの設定
sudoコマンドの設定をする際にはvisudoコマンドを実行しますが、そのときに開かれるエディタのデフォルトはnanoエディタになっています。私はCUIでのエディタは普段Vimを使っている(nanoエディタの使い方がわからない)ためデフォルトのエディタをVimに変更します。vim
コマンドが実行できない場合はsudo apt install -y vim
コマンドでインストールしておきましょう。お好みでNeovimを入れてもいいかもしれません。
sudo update-alternatives --config editor
コマンドを実行すると使用可能なエディタの一覧が表示されます。
使用したいエディタの番号を入力して(ここではvim.basicを使いたいので4)Enterで確定します。
sudoの設定を変更する
visudoコマンドを使う、あるいは/etc/sudoers.d以下に設定ファイルを配置することでsudoの設定を変更することができます。visudoを使う場合は設定に誤りがあった場合設定ファイルが上書きされず安全に設定変更を行えるためそちらで設定します。
このような画面が表示されます。vimの場合Go
と入力してファイルの末尾にカーソルを移動してインサートモードに入り、設定を追加します。一応補足しておきますと大文字のGでファイル末尾に移動し小文字のoで次行を挿入してインサートモードに入ります。(vimの操作については検索してください…)
[username] ALL=(ALL) NOPASSWD: ALL
[username]の部分は今現在ログインしているユーザー名を入力してください。<ESC>:qw
と入力するとファイルを保存して終了します。これでsudoコマンドをパスワードなしで実行できるようになります。
Docker Desktopのインストール
いよいよDockerをインストールします。MicroSoftのドキュメントがわかりやすくて確実だと思います。
https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers#install-docker-desktop
インストールと設定が終わったらUbuntu上でdocker run hello-world
コマンドを実行してみましょう。以下のようにHello from Docker!のメッセージが表示されていれば成功です。
Dockerを導入して動作が確認できたところで今回はここまでにしておきます。Dockerコマンドだけでも仮想環境を動かせますが、次はdocker-composeを使ってDockerコンテナを管理するための記事を書きたいと思ってます。それでは。