私は docker (docker-compose) を使用してプライベート Nextcloud インスタンスを実行しています。新しい Nextcloud バージョンにアップグレードしようとしましたが、メジャー バージョン (21 から 23) をスキップしてはいけないことに気付きませんでした。現在、まったく起動できません。
- バージョン 23 でコンテナを起動してアップグレードをトリガーしようとすると、21 からアップグレードできないため失敗します。
leifb@***:~/nextcloud$ sudo docker-compose exec --user www-data app php occ upgrade Nextcloud or one of the apps require upgrade - only a limited number of commands are available [...] Exception: Updates between multiple major versions and downgrades are unsupported. Update failed [...]
- バージョン 23 未満のコンテナを起動しようとすると、データがバージョン 23 のものであると判断されるため失敗します。
app_1 | Can't start Nextcloud because the version of the data (23.0.3.2) is higher than the docker image version (22.2.6.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
強制的にアップグレードしたり、バージョン 22 から開始したりする方法はありますか?
これが私の docker-compose ファイルです:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=***
- MYSQL_PASSWORD=***
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:22
restart: always
ports:
- 9009:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=***
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- OVERWRITEHOST=***
- OVERWRITEPROTOCOL=https
ありがとう!
答え1
version.php
ボリュームのファイルのバージョンを手動で変更することで問題を解決できましたnextcloud
。
これにより、修復不可能な問題が発生する可能性があります。同じことを行う場合は、データをバックアップしてください。
そのファイルの完全なパスは次のとおりです。/var/lib/docker/volumes/nextcloud_nextcloud/_data/version.php
version.php
最初に nextcloud をセットアップしたときに作成した古い nextcloud ボリュームが残っていました。正しいバージョンであることが確信できたので、そのボリュームから使用しました。
変更された点は次のとおりです:
"正しくない" version.php
:
<?php
$OC_Version = array(23,0,3,2);
$OC_VersionString = '23.0.3';
$OC_Edition = '';
$OC_Channel = 'stable';
$OC_VersionCanBeUpgradedFrom = array (
'nextcloud' =>
array (
'22.2' => true,
'23.0' => true,
),
'owncloud' =>
array (
'10.5' => true,
),
);
$OC_Build = '2022-03-21T13:05:48+00:00 5f6449283b5eb3cd0c96f475ff6f68a6c73a8140';
$vendor = 'nextcloud';
"正しい" version.php
:
<?php
$OC_Version = array(21,0,1,1);
$OC_VersionString = '21.0.1';
$OC_Edition = '';
$OC_Channel = 'stable';
$OC_VersionCanBeUpgradedFrom = array (
'nextcloud' =>
array (
'20.0' => true,
'21.0' => true,
),
'owncloud' =>
array (
'10.5' => true,
),
);
$OC_Build = '2021-04-08T13:32:52+00:00 bd555dbe8568b2509bd7d82fabbe38d76c86afbe'
;
$vendor = 'nextcloud';
変更後、まずバージョン 21 で nextcloud を起動して、すべてがまだ存在するかどうかを確認できました。次に、問題なくバージョン 22 と 23 を起動して段階的に更新することができました。
追伸:
docker-compose exec --user www-data app php occ
手動で更新したり、メンテナンス モードを無効にしたりできます。