2020-10-20

Raspberry Pi 4 + Docker で WordPressが起動しない時に読む記事

ラズパイ上でDocker化したWordPressを使おうとするとなぜか動かない可能性が高いので私が解決した例を示す。

Article Image

はじめに

ラズパイ上でDockerのWordPressは「正常に動く」のだが恐らく多くの人がエラーにぶち当たる。

殆どの原因はラズパイのCPUがARM系である故に正しいイメージを選ばないと動作しないというところからきている。

今回は解決したトラブルを記載しておく。

動作手順などは記載しないため他サイトを参考にしてほしい。

正常動作するdocker-compose.yml

先に私の環境で動いたdocker-compose.ymlを貼り付ける。

面倒であればパスワードだけ設定して貼り付ければ動くと思う。

version: "3"
services:
  db:
    privileged: true
    image: mysql/mysql-server:latest-aarch64
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: (任意のパスワード1)
      MYSQL_DATABASE: wp_db
      MYSQL_USER: user
      MYSQL_PASSWORD: (任意のパスワード2)

  wordpress:
    image: arm32v7/wordpress:latest
    volumes:
      - ./wordpress/html:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wp_db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: (任意のパスワード2)

注意点

  • 上のカッコに入っている(任意のパスワード1)と(任意のパスワード2)は違うものにする
  • 任意のパスワード2は2箇所あるので同じものにする

ここからは実際に遭遇して解決していった問題を記述していく。

MySQLが再起動し続ける問題

docker-compose up -dで起動した後

docker psを実行した時にMySQLの状態(STATUS)を見てみるとRestarting状態が続く現象。

正常な場合は

image-20201020134719200

このようにUpになる。

必須オプション:privileged: true

理由は色々あるがこれはパッケージの問題ではなくdocker-compose.ymlのMySQLの設定にprivileged: trueというのが必要。

正直セキュリティ的には危険性を孕んでいるので回避策を考えたがどうしてもtrueにしないとDBが立ち上がらないので使うことにした。

特権コンテナの危険性については次が非常に詳しい

Dockerコンテナを特権モードで実行することが危険な理由 | トレンドマイクロ セキュリティブログ

MySQLのパスワード認証がうまくいかない

MySQL側に書いてある次の設定

command: --default-authentication-plugin=mysql_native_password

こちらはMySQLのv8から認証方法が変わっておりWordPressが対応していないので従来の認証方法に戻す設定。

MySQLがそもそもエラーで立ち上がらない

恐らく最もよくぶち当たるであろう問題。

こればっかりは恐らくCPU依存の問題で詳しいことがわからないため色々試した結果シンプルに次のイメージを使う必要がある。

image: mysql/mysql-server:latest-aarch64

MySQLのserver版でしかもaarch64。

こちらは公式パッケージなので常に最新である可能性が高い。

余談:海外勢を含む多くのサイトでラズパイ用には「hypriot/rpi-mysql」を推奨しているが、こちらは2年前から更新されておらず使わないほうがよろしいかと思う。

ブラウザでWordPressにアクセスできない

WordPressの最初の管理画面が応答なしでになるパターン。

こちらも次のイメージを設定するだけで解決した。

image: arm32v7/wordpress:latest

こちらは有志のイメージなので更新がいずれ途絶える可能性もあるが、私が使った時は最新で更新されていた。

通常のwordpress:latestにしておいても通常に立ち上がるので不思議なのだがアクセス時にエラーが出る。

aarch64/wordpressというのもあるがこちらは起動すらできない上に4年前のもの。

以上

ひとまず私がぶちあたった問題は以上である。

この先ラズパイを自宅サーバーにする人工は増えていくと考えているのでこういったトラブル解決記事は多いほうが良い。

今回はやり方ではなくトラブル解決だけに絞って簡潔にBLOG記事にした。

docker-composeの立ち上げ方などはいくらでも他にサイトがあるので別を参考にしてほしい。



この記事のタグ

この記事をシェア


謎の技術研究部 (謎技研)