開発環境構築のまとめです。開発は、WSL + Docker + VSCode(Remote Development)で行います。なお、この記事は個人的なメモとなりますので詳細解説はしておりません。
Docker
コンテナの作成には、VSCodeと拡張機能のRemote Developmentを使用します。
ビルドコンテキスト
/home/name/project_dir/
|-- .devcontainer/
| |-- docker-image/
| | |-- Dockerfile
| | `-- .ini
| |-- .env
| |-- devcontainer.json
| `-- docker-compose.yml
`-- src/
|-- bin/
`-- public_html/
`-- wp/
.env
Dockerに渡す環境変数を設定します。
.docker-compose.yml
build:args
で、.envで定義した環境変数をDockerfileへ渡します。
environment
で、.envで定義した環境変数をコンテナへ渡します。
docker-compose config
で、現在のcomposeファイルの確認と表示ができます。
Dockerfile
マルチステージビルドを利用しています。
src (マウントディレクトリ)
srcディレクトリをコンテナへマウントします(docker-composeのvolumes
で定義)。
注意点として、src以下、public_htmlなどの下位ディレクトリの作成をローカル側で済ますことが挙げられます。なぜなら、コンテナ作成時、working_dir
で指定したディレクトリが存在しない場合は自動で作成されるのですが、それだと、ユーザーがrootになってしまい、パーミッションの問題が生まれてしまうからです。ローカルで作成しておくことで、所有者が引き継がれます。
VSCode
初期設定
settings.json
「Ctrl + Shift + P」でコマンドパレットを表示し、Preferences: Open Settings(JSON)を開く。
{
"editor.bracketPairColorization.enabled": true, // ブラケットの開始と終了を同じ色に
"editor.fontFamily": "Source Code Pro, Consolas, 'Courier New', monospace",
"git.ignoreLegacyWarning": true,
"indentRainbow.colors": [
"rgba(255,255,64,0.04)",
"rgba(127,255,127,0.04)",
"rgba(255,127,255,0.04)",
"rgba(79,236,236,0.04)"
],
"workbench.editor.enablePreview": false, // 常に新規エディタでファイルを開く
"workbench.tree.indent": 10, // ファルダ階層のインデント幅
"workbench.iconTheme": "vscode-icons", // エクスプローラーのアイコン
"[php]": {
"editor.wordSeparators": "`~!@#%^&*()-=+[{]}\\|;:'\",.<>/?" // 変数のダブルクリックで$を選択範囲に含める
},
}
拡張機能
ローカルには最低限の拡張機能だけをインストールし、開発時に必要な拡張機能は、Remote Developmentを利用して各コンテナでインストールします。
Remote Development
devcontainer.json
devcontainer.jsonは、VSCode用のコンテナ設定ファイルです。下記は基本的に使うものだけを記入していますが、VSCodeで使う拡張機能やコンテナの内容によって変わってきます。
Git
コンテナの初回起動後
$ git config --global user.name 'Name'
$ git config --global user.email '12345678+example@users.noreply.github.com'
$ git config --global init.defaultBranch main
GitHub
リポジトリ作成
GitHubにリポジトリを作成します。
本番サーバーに自動デプロイをする場合はOrganizationアカウントに、それ以外の場合は個人アカウントにリポジトリを作成します。
エラー
コンテナの作成、起動失敗
docker logs <コンテナ名>
でエラーメッセージを確認。
更新履歴
- VSCod v1.66 から編集履歴(ローカル履歴)が標準で管理できるようになったので、拡張機能であるLocal Historyを削除 - 22.04.02
- 本番サーバへのデプロイをGitHub Actionsへ変更したため、拡張機能からSFTPを削除 - 22.04.19