【備忘録】Docker上でWordPressの開発を行う際に知っておくと便利だったこと

2 min read読了の目安(約2500字

Docker上でWordPressを動かして開発を行う際に、知っておくと地味に便利だったことがいくつかあるので、備忘録がてら書いていこうと思います。
他にも便利な技があればコメントで教えていただけると幸いです。

なお、ここで書いている内容はすべて下記の ホストからDocker上で動くWordPressのMySQLにアクセスしたい 内に記載した docker-compose.yml の設定で環境構築した前提で書いています。

ホストからDocker上で動くWordPressのMySQLにアクセスしたい

WordPressをDocker環境で立ち上げる際にまず見ると便利なサイトはこちら

https://docs.docker.jp/compose/wordpress.html

2021年4月時点だと、下記のようなymlファイルが載せられています。

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

これをdocker-compose.ymlに貼り付けて、docker-compose upすれば、これだけでWordPress環境が立ち上がります。
とても便利ですね。

さて、本題ですが、ホスト側からMySQLでアクセスできるようにするには、このdocker-compose.ymlを下記のように書き換える必要があります。

diff --git a/docker-compose.yml b/docker-compose.yml
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,6 +6,8 @@ services:
      volumes:
        - db_data:/var/lib/mysql
      restart: always
+     ports:
+       - "3306:3306"
      environment:
        MYSQL_ROOT_PASSWORD: somewordpress
        MYSQL_DATABASE: wordpress

これで3306ポートでMySQLにアクセスできます。
開発時、データの中身をチェックしながら作業したいときに役立ちます。

Docker上で動いているWordPressのファイルを見たい時

Docker上で動いているWordPressのファイルの中身をターミナル経由で確認したい時、docker execコマンドで入ります。

docker exec -it {CONTAINER ID} bash

このコマンドを叩くことで、指定したコンテナ内に新しいbashセッションを作成します。
WordPressに関するファイルは /var/www/html にあります。

Docker コンテナ上で動いているWordPressのファイルをローカル(ホスト側)にコピーしたい

これを実現するためには docker cp コマンドを使います。
コマンド名からも想像できる通り、dockerで使える cp に似た感じのコマンドです。
とは言え、cp と全く同じというわけではないので、使用前に下記のドキュメントを見ておくことをおすすめします。

https://docs.docker.jp/engine/reference/commandline/cp.html

下記のコマンドはホスト側のカレントディレクトリにWordPressのhtmlディレクトリをコピーする例です。
ファイルのバックアップなどの用途で重宝します。

docker cp {CONTAINER ID}:/var/www/html .

# コピーしたファイルの中身を確認
ls -la ./html

ローカル(ホスト側)からDocker コンテナ上で動いているWordPressにファイルをコピーさせたい

こちらも同じく docker cp コマンドが使えます。
なお cp コマンドは、同名のディレクトリが存在していても上書きされるので注意が必要です。

docker cp ./html {CONTAINER ID}:/var/www/

最後に

これらのことを知っておくと、開発時のちょっとした時( データベースやファイルの中身を確認したい時・修正したファイルをバックアップしたいときなど )に役立つと思ったので、備忘録としてこちらに書かせていただきました。
最初にも書きましたが、他にも便利な技があればコメントで教えていただけると幸いです。