ローカルボリュームを持つ docker compose wordpress を正しい権限で新しいホストに移動する

ローカルボリュームを持つ docker compose wordpress を正しい権限で新しいホストに移動する

Wordpress と Mysql を含む Docker Compoe プロジェクトを新しいホストに移行 / 移動するのに苦労しています。

私のはdocker-compoye.yaml以下の通りです:

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8099:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 'ahw5ai8gu9waewiuNgaithev7xie0jah'
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DEBUG: 1
    depends_on:
      - db
    volumes:
      - .wordpress/plugins:/var/www/html/wp-content/plugins
      - .wordpress/themes:/var/www/html/wp-content/themes
      - .wordpress/uploads:/var/www/html/wp-content/uploads
      - ./wordpress.ini:/usr/local/etc/php/conf.d/wordpress.ini

  db:
    image: mysql:5.7
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_ROOT_PASSWORD: ahw5ai8gu9waewiuNgaithev7xie0jah
    volumes:
      - .db:/var/lib/mysql

ディレクトリ構造は次のとおりです。

drwxrwxr-x  8     999 mbecker 4,0K Mär  5 09:36 .db
-rwxrwxr-x  1 mbecker mbecker 2,5K Mär  2 16:39 docker-compose.yaml
drwxrwxrwx  6 mbecker mbecker 4,0K Apr 11  2021 .wordpress

完全なディレクトリ/ファイルを新しいホストにコピーするために、次の移行戦略を実行しました。

  • 完全なディレクトリ(およびサブディレクトリ)を新しいhistにrsyncする
  • ローカルディレクトリの.tarを再帰的に作成し、新しいホストに移動して抽出します。

ただし、たとえばボリューム/ディレクトリ パス内のファイル権限がから.wordpress/plugins/に変更されました。www-datambecker

新しいホストで docker compose プロジェクトを開始すると、次の Wordpress エラーが発生します。

Notice: Function WP_User_Query::query was called incorrectly. User queries should not be run before the plugins_loaded hook. Please see Debugging in WordPress for more information. (This message was added in version 6.1.1.) in /var/www/html/wp-includes/functions.php on line 5835

** データベースデータはインポートスクリプトによって正しくインポートされます ** DNS名は新しいIPを指しており、Nginxリバースプロキシディレクティブは同じです

正しいファイル権限でデータをあるホストから別のホストに移動する方法はありますか?

答え1

一般的に、権限の問題を修正するには、「sudo chown -R www-data:www-data folder」を実行するとうまくいくはずです。私の場合、イメージ タグを指定し忘れていました。Docker は「latest」タグが付いたイメージを自動的に取得します。数年間実行されている docker compose プロジェクトの場合、「latest」イメージは 2 年前のイメージです。移行した新しい docker compose プロジェクトに正しいイメージ タグを追加したところ、うまくいきました。

関連情報