VSCode
のdevcontainer
でwordpress
を使うメモ
単純に追加するだけになるけど、メモを残す。
VSCode
のバージョンは 1.47.0
devcontainerの初期設定
devcontainer
の作成時は、PHP7 & mariaDB
を選ぶ。これにwordpress
を追加するだけで済むので、らく。
.devcontainer
フォルダに自動で生成されるファイルを少しいじっていく。
devcontainer.jsonの設定
まずは、devcontainer.json
から。
ユーザをroot
でなくしておくだけ。(別にrootのままでもいいけど一応変える。).devcontainer/devcontainer.json
の一番下の行をアンコメント。
{
"name": "PHP 7 & MariaDB",
"dockerComposeFile": "docker-compose.yml",
"service": "php",
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"felixfbecker.php-debug",
"felixfbecker.php-intellisense",
"mtxr.sqltools"
],
"workspaceFolder": "/workspace",
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
// ここのコメントを外す
"remoteUser": "vscode",
}
docker-compose.ymlの設定
次はdocker-compose.yml
を調整する。
大まかにはwordpress
コンテナを追加して、ポート設定をいじるだけ。
データベースはvolume
を利用する。
version: "3"
services:
php:
build: .
volumes:
- ..:/workspace:cached
# phpコンテナではアクセスしないのでポートはEXPOSEしない。
# EXPOSEするときはポート重複に気をつける。
# ports:
# For use with PHP (e.g. `php -S localhost:8080`)
# - "8080:8080"
command: sleep infinity
wordpress:
image: wordpress:5
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mariadb:3306
WORDPRESS_DB_PASSWORD: 秘密パスワード
volumes:
# wordpressのディレクトリは、ルートのwprootディレクトリにする。(ローカルを使う)
- ../wproot:/var/www/html
mariadb:
image: mariadb:10.4
environment:
MYSQL_ROOT_PASSWORD: 秘密パスワード
volumes:
- db:/var/lib/mysql
volumes:
db:
することをまとめれば、
- phpコンテナの設定はポートだけコメントアウト。
- mariadbコンテナは
volumes
の設定を追加。追加しないとDBがコンテナと一蓮托生になってしまう。 - wordpressコンテナは新規追加。
という形になる。(と思う。デフォルトを失念したため少し違うかもしれない。)
Dockerfileはそのまま
devcontainer
を作成すると、Dockerfile
も生成されるが、これはPHPコンテナのビルドファイルなのでそのままでいい。
devcontainerをリビルド
VSCodeのウィンドウ左下のリモート接続のアイコンからdevcontainer
をリビルドすれば、wordpress
も含まれた状態でリビルドされる。
リビルドが終了後、localhost:8080
などでアクセスすればWordpressの初期設定画面が開かれる流れになる。しかし、ここで問題が発生した。
DBと接続できないエラー
ページにアクセスすると、Error establishing a database connection
などというエラーが表示されていた。(表記に揺らぎがあるかも)
コンテナのログを見ると、確かにDBへの接続がうまく行っていないように見えた。
そこで、docker-compose.yml
を色々と調整したりしたが、いくら調整してリビルドしてもうまくいかない。
wordpressコンテナの再起動で直る
そこで、ビルド後の走っている状態で、wordpress
コンテナをリスタートすると、DBの接続はうまく行った。おそらく、リトライの回数制限前に接続に成功したためか?
コンテナの再起動は、Docker Desktop
のダッシュボードを開いて、対象コンテナを探し、マウスオーバーでリスタートのようなボタン(こんなの-->🔄)が表示されるので、それをクリックするだけで再起動できる。
とりあえず、普通にwordpressの初期設定画面にいけた。
2回目以降のcompose起動時にはリスタートさせずにDBの接続に成功しているのでよくわからない。
後書き
とりあえず構築はできた。もっと他の方法があるような気もするが、まぁよし。
wordpressのプラグインを作ろうかと思ったのだが、違う解決法の方がいい気がしたので、これは環境構築だけのメモとなる。
以上。
広告