24
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerでWP-CLI入りのWordpressコンテナを作る

Last updated at Posted at 2019-04-09

公式のwordpressコンテナとwp-cliコンテナはディストリビューションが異なるため、主にユーザーIDの違いによって連携させるのに苦労があるようだったので、wordpressコンテナに追加することにした。

レイアウト

この辺をgitでやり取りする
※package.jsonは/dockerと同じ階層に置いている。

ディレクトリ構造
/docker
  -/wordpress       <-- 運用時に必要なものはここへ
    -/wp-content
      - ...
  -/dev             <-- 開発時に使うものをまとめる場所。
    -/wordpress
      -Dockerfile   <--- wp-cliのインストール機能を追加
    -/mysql
      -/docker-entrypoint-initdb.d
        -setup.sql  <--- コンテナの初期化SQL
    -/assets        <---.pugとかwebpack前のアセットなどをここへ
      - ...
  -docker-compose.yml
package.json

docker-compose

docker-compose.yml
version: '3.6'

services:
   db-for-wp:
     image: mysql:5.7
     container_name: db-for-wp
     ports:
       - "3306:3306"
     volumes:
      - db-for-wp-data-volume:/var/lib/mysql
      - ./dev/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
     environment:
       MYSQL_ROOT_PASSWORD: password
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: password
       
   wp:
     build: ./dev/wordpress
     depends_on:
       - db-for-wp
     container_name: wp
     ports:
       - "8080:80"
     volumes:
      - ./wordpress/wp-content:/var/www/html/wp-content
     environment:
       WORDPRESS_DB_HOST: db-for-wp:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: password
       
volumes:
     db-for-wp-data-volume:

肝心のDockerファイル

./dev/wordpress/Dockerfile
FROM wordpress:5

#wp-cliのインストール
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
     && chmod +x wp-cli.phar \
     && mv wp-cli.phar /usr/local/bin/wp \
     && wp --info

WP-CLIコマンド

wp-cliで初期化する。
DockerfileのRUNで実行するのがスマートだけど、
最初にやれば、Git管理下のファイルと後述のsetup.sqlファイルに書き出したもので再現されるので、とりあえず手打ち。
コンテナにはrootで入っていることが多いので、--allow-rootを忘れずに。

wp-cli
# WordPressセットアップ
wp core install --url='http://localhost:8080' --title='新規サイト' --admin_user='admin_user_name' --admin_password='admin_pass' --admin_email='wp@example.com' --allow-root 

# 日本語化
wp language core install ja --activate --allow-root 

# タイムゾーンと日時表記
wp option update timezone_string 'Asia/Tokyo' --allow-root 
wp option update date_format 'Y-m-d' --allow-root 
wp option update time_format 'H:i' --allow-root

# プラグインの削除
wp plugin delete hello.php --allow-root

# プラグインのインストール
wp plugin install wp-multibyte-patch --activate --allow-root 
#wp plugin install jetpack --activate --allow-root
#wp plugin install backwpup --activate --allow-root
#wp plugin install siteguard --activate --allow-root

# 新規テーマのひな型を追加してアクティブ化(new-themeは任意のテーマ識別子)
wp scaffold _s new-theme --theme_name="新規テーマ" --author="制作者名" --allow-root
wp theme activate new-theme --allow-root

# テーマの削除
wp theme delete twentyseventeen --allow-root
wp theme delete twentyeighteen --allow-root
wp theme delete twentynineteen --allow-root
wp theme delete twentytwenty --allow-root
wp theme delete twentytwentyone --allow-root

以下は任意
※設定値の変更は テーマのfunctions.phpから
add_action('after_setup_theme', 'my_theme_after_setup');でやるほうが、見てわかりやすく合理的。

wp-cli
###メディア: 生成しない画像サイズを0にする

# thumbnail: : 標準 150*150 & thumbnail_crop=1 
# wp option set thumbnail_size_w 0 --allow-root

# medium: 標準 640*640
wp option set medium_size_w 0 --allow-root

# medium_large: 標準768*768
wp option set medium_large_size_w 0 --allow-root

# large: 標準1024*1024
# wp option set large_size_w 0 --allow-root

### 生成するメディアのサイズ指定
# wp option set thumbnail_crop 1 --allow-root
wp option set thumbnail_size_w 300 --allow-root
wp option set thumbnail_size_h 300 --allow-root
wp option set large_size_w 1160 --allow-root
wp option set large_size_h 1160 --allow-root

DBコンテナ作成時の初期化SQLについて

確認用に渡す前などに適宜dumpしておくと、はじめてdocker-compose up したときに内容が反映される。
Gitで管理できるし納品用の初期化SQLとしても使える。

mysqlコンテナ内で
mysqldump -u root -p wordpress > /docker-entrypoint-initdb.d/setup.sql

すでにコンテナが作成されている場合は、
ボリュームコンテナの削除docker volume remove ボリュームコンテナ名
(上の例だと docker volume remove db-for-wp-data-volume)をすることで、
次回 docker-compose up 時にsetup.sqlの内容が反映される。

24
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?