PHP、WordPress の開発を行うと、VSCodeなど活用して、ローカルコードを書き、動作確認したいね。
Dockerで用意することにしました。
Dockerは、インフラ関係やDevOps界隈で注目されている技術の一つで、Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。
(https://www.docker.com/what-docker)
Contents
Dockerのインストール
1. 環境に応じてDockerをインストール
* Windowsの場合
* Mac OSの場合
2. DockerのWordPress環境ファイル作成
docker-compose.ymlのファイルを作成する。
chen@Hong-Mac-mini ~ % cd Docker
chen@Hong-Mac-mini Docker % mkdir WP10
chen@Hong-Mac-mini Docker % cd WP10
chen@Hong-Mac-mini Docker % cat docker-compose.yml
version: '2.1' services: wordpress: image: wordpress:latest ports: - "3001:80" environment: WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: mysql_user WORDPRESS_DB_PASSWORD: mysql_pw volumes: - ./wordpress:/var/www/html mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: root_pw MYSQL_DATABASE: wordpress MYSQL_USER: mysql_user MYSQL_PASSWORD: mysql_pw
3. Dockerの起動
Creating network “docker_default” with the default driver
Pulling wordpress (wordpress:latest)…
latest: Pulling from library/wordpress
bb79b6b2107f: Downloading [=============================================> ] 24.82MB/27.09MB
80f7a64e4b25: Download complete
da391f3e81f0: Downloading [===============> ] 23.58MB/76.65MB
8199ae3052e1: Download complete
284fd0f314b2: Download complete
f38db365cd8a: Waiting
1416a501db13: Waiting
1a45b5b978cd: Waiting
c662caa8d2ec: Waiting
2db216a7247d: Waiting
d23772456121: Waiting
3c068acf6c51: Waiting
2980002e0c52: Waiting
b6ddfa4e307a: Waiting
2553391243c3: Waiting
a3c2b330e95d: Waiting
bc1e61f6eb18: Waiting
033f43da5ae7: Waiting
277905382399: Waiting
a1b0f1f9235d: Waiting
しばらく待つと、mysqld と、Apache/2.4.38 (Debian) PHP/7.4.11 動作する環境ができました。
Creating wp10_wordpress_1 … done
Attaching to wp10_mysql_1, wp10_wordpress_1…mysql_1 | 2020-10-21T05:43:41.230024Z 0 [Note] mysqld: ready for connections.
mysql_1 | Version: ‘5.7.32’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 MySQL Community Server (GPL)
wordpress_1 | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.18.0.2. Set the ‘ServerName’ directive globally to suppress this message
wordpress_1 | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.18.0.2. Set the ‘ServerName’ directive globally to suppress this message
wordpress_1 | [Wed Oct 21 05:43:42.708865 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.11 configured — resuming normal operations
wordpress_1 | [Wed Oct 21 05:43:42.709072 2020] [core:notice] [pid 1] AH00094: Command line: ‘apache2 -D FOREGROUND’
動いているコンテナの確認
コンテナ名は、wp10_wordpress_1 と wp10_mysql_1 になります。
2つのコンテナが稼動していることが確認できます。コンテナIDはホスト名としても使用されます
chen@Hong-Mac-mini Docker % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28d87f579a8f mysql:5.7 “docker-entrypoint.s…” 44 minutes ago Up 44 minutes 3306/tcp, 33060/tcp wp10_mysql_1
7f066d65b388 wordpress:latest “docker-entrypoint.s…” 44 minutes ago Up 44 minutes 0.0.0.0:3001->80/tcp wp10_wordpress_1
chen@Hong-Mac-mini Docker %
4. WordPressの起動
http://localhost:3001/にアクセス
WordPressセットアップの画面が見えます。
5. コンテナにアクセス
起動中のコンテナにアクセスするにはexec
コマンドを使います。
docker_wordpress_1 コンテナにアクセス
これでWordPressがインストールされているディレクトリにアクセスします。
root@7f066d65b388:/var/www/html#
root@7f066d65b388:/var/www/html# pwd
/var/www/html
root@7f066d65b388:/var/www/html# php -v
PHP 7.4.11 (cli) (built: Oct 13 2020 10:01:40) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
上記方法でコンテナにアクセスすれば、対話的にLinuxコマンドが使えるので
WordPress内のテーマファイルの書き換えや権限変更なども可能です。
docker_mysql_1 コンテナにアクセス
MySQLのイメージのバージョンはlatestにしていません。latestを指定すると、MySQL8.0のコンテナが立ちます。
MySQL8.0ではパスワードの認証方法が5.7以前とは異なるため(Mysql8.0 ではデフォルトの認証形式を mysql_native_password から caching_sha2_password に変更している)、WordPress認証エラーとなります。このため、あえてMySQL5.7を指定しています。
WordPress環境をホスト側にマウント
テーマやプラグインを直接扱えるようにするには、コンテナ側で構築された環境とホスト側のディレクトリをマウントします。
Composeファイルのwordpressサービス配下に以下を定義します。
wordpress: volumes: - ./wordpress:/var/www/html
これでコンテナを起動したときにホスト側のwordpressフォルダにWordPressファイル群が作成されます。
downコマンドで停止しても削除されません。
–volumesオプションを付けて停止しても削除されません。
これてVSCodeから、直接ファイルの編集ができるようになります。
6. コンテナの起動と停止
— 起動
$ docker start <コンテナ名 or コンテナID>
— 停止
$ docker stop <コンテナ名 or コンテナID>
今回の場合は「docker_wordpress_1」と「docker_mysql_1」を両方停止しておきます。
停止しただけなら、削除ではないのでまたstartした時に前回の続きから使えるわけですね。
7.コンテナの削除
停止しているコンテナの確認
$ docker ps -a
コンテナの削除コマンド: docker rm [コンテナID]
8.イメージの削除
現状のイメージの確認
$ docker images
イメージの削除コマンド: docker rmi [イメージID]
参考;
- https://www.pressmantech.com/tech/4873 — [WordPress]超簡単!DockerでWordPressを1分で立ち上げよう[WP10]