本番で公開しているWordPressのコピーをDockerで作る際のポイント | クズリーマンのカス備忘録

本番で公開しているWordPressのコピーをDockerで作る際のポイント

ワードプレスのロゴ WordPress
スポンサーリンク

ワードプレスのロゴ

基本

ファイルとDBのバックアップを取得する。

バックアッププラグイン(BackWPUpとか)で取得したものでもいいかも。圧縮されてたらダウンロードしやすいだろうし。

Dockerイメージの使い分け

以下の2パターンで分ける。

  • トップディレクトリにWordPressのコンテンツファイルを配置する場合(public_html/ ←みたいな)
  • トップディレクトリより下の階層にWordPressのコンテンツファイルを配置する場合(public_html/wp/ ←みたいな)

トップディレクトリにWordPressのコンテンツファイルを配置する場合(public_html/ ←みたいな)

公式のイメージを使う。

 

トップディレクトリより下の階層にWordPressのコンテンツファイルを配置する場合(public_html/wp/ ←みたいな)

webサーバ側

以下いずれかのやり方でやる。

  • 後日追記。docker-composeを使って、カンタンなやり方
  • OSのコンテナイメージから作るやり方。

詳しく書く。

後日追記。docker-composeを使って、カンタンなやり方
    working_dir: /var/www/html/サブディレクトリ

わざわざ1から作らんでも、↑これを、docker-compose.ymlにつけたすだけでいいってことでしたわ。

インデントレベル(っていうのか?)は、「services」の直下ですな。

docker-composeはymlの記述でインデントを間違えると動かないので注意ですぞ。

version: "3"
services:
  hoge-wp:
    restart: always
    image: wordpress:latest
    container_name: hoge-wp
    ports:
      - "9000:80"
    logging:
      options:
        max-size: 5m
    environment:
      TZ: Asia/Tokyo
      WORDPRESS_DB_NAME: DB名
      WORDPRESS_DB_USER: DBユーザ
      WORDPRESS_DB_PASSWORD: DBのパスワード
      WORDPRESS_DB_HOST: DBのホスト:3306
      WORDPRESS_TABLE_PREFIX: "テーブルプリフィックスを変えたいとき"
    volumes:
      - ./data:/var/www/html
    working_dir: /var/www/html/サブディレクトリ

https://shimer-system.com/blog/archives/472
(あざます)

 

OSのコンテナイメージから作るやり方。

後日追記。基本は前述の「後日追記。docker-composeを使って、カンタンなやり方」のやり方で良いかな。

もうちょっと柔軟にやりたい場合のみ以下追記するやり方で作れば良い。

 

こないだ公式のイメージからdockerコンテナ作成したとき、うまくいかなかった。なにがうまく行かなかったか、、忘れてしもうた…。リダイレクトだったか…?

上記が長時間解決せんかったので、CentOSイメージを落として作ることにした。別に他のOSでもいいけど、使い慣れてたから。

この場合、いちから作る手順を踏む。

以下は思い出したものをざっと書き出した概要です。

  • epel, remi リポジトリの追加
  • yum install httpd
  • yum install –enablerepo=remi-php73 php php-common php-mbstring php-mysql rsync vim
    • rsyncとvimは自分が使いたいだけ
  • ウェブブラウザでファイル名を省略してアクセスしたときに表示させるファイルをindex.htmlを最優先にしたい場合は、conf.d/php.confにあるDirectoryIndex に index.htmlを追記する。
    • DirectoryIndex index.html index.php
  • ファイルのパーミッションとオーナーを調整する

 

以上のことをやったweb/Dockerfile↓↓

上記の「username」の部分は、使用するユーザー名に置換すること。

 

DBサーバ側

dockerでMySQLたてたら、データベースとユーザー作成する。

db 作成

 

CREATE DATABASE データベース名;

 

 

ユーザー権限付与
GRANT ALL ON データベース名.* TO MySQLユーザー名@'%' IDENTIFIED BY 'パスワード';

上記のように、「MySQLユーザー名@’%’」と指定すると、このユーザーはどこからでもアクセス可能となる。セキュリティを考慮して適宜「%」の部分は変更すること。(192.168.% とか)

⇒MySQLユーザー名@localhost でしか権限付与してない場合、MySQLサーバとWebサーバを分けてる場合にWebサーバから接続できない

 ⇒外部からも接続できるようにする必要がある

 

sqlファイルをRestoreする

当たり前だけど、DBのデータが無いとだめなので、DUMP(エクスポート)で取得した.sqlのデータをRestore(インポート)すること。

 

httpsからhttpへ変更

本番ではhttpsで構築されていると思うが、ローカルに作る場合は証明書が無いとhttpsにできない。

以下のいずれかの対応が必要。

  • 本番で使ってる証明書をつかってSSL化する
  • オレオレ証明書を使って配置する。更にブラウザ側もエラーにならないように証明書を登録する
  • インターネット上に公開するなら、cloudflareに登録してcloudflareにssl通信を肩代わりしてもらう(cloudflareの設定でフレキシブルに指定する)(下記のhttp化は必要)
  • ローカルテスト環境ではhttps化は諦めてhttpにする(以下のコマンドをMySQL上で実行する)
update wp_options set option_value='http://サイト名/フォルダ名' where option_name='siteurl';

⇒public_html/ ←みたいにドキュメントルート直下にWordPressコンテンツファイルを配置している場合は、「/フォルダ名」部分は不要。

 

update wp_options set option_value='http://サイト名/' where option_name='name';

 

 

wp-config.php内のDB-HOSTの情報を変更する。

久々にやると忘れがち。

ちなみにDockerのMySQLにIPを指定して割り振ってないと、Dockerコンテナを再起動したときにIPアドレスが変わってしまった。ちょこっと検証に使うだけなら設定しなくてもいいだろうけど、長い間検証に使うならIPアドレスを割り振っといたほうがいい。docker-compose.ymlとかで。

コメント

  1. […] phpMyAdminやMySQLでSQLコマンドを実行する。 […]

タイトルとURLをコピーしました