Я запускаю свой частный экземпляр Nextcloud с помощью docker (docker-compose). Я попытался обновиться до новой версии 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
У меня был старый том nextcloud, который я создал, когда изначально настраивал nextcloud. Я просто использовал его version.php
из того тома, так как был совершенно уверен, что у него правильная версия.
Вот что изменилось:
«неправильно» 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';
После этого изменения я смог запустить nextcloud сначала в версии 21, чтобы проверить, все ли там по-прежнему. Затем я смог запустить и обновиться до 22 и 23 пошагово, просто отлично.
P.S.:
docker-compose exec --user www-data app php occ
Позволяет вручную обновлять и отключать режим обслуживания.