Как исправить Docker-контейнер Nextcloud после пропуска основной версии?

Как исправить Docker-контейнер Nextcloud после пропуска основной версии?

Я запускаю свой частный экземпляр 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Позволяет вручную обновлять и отключать режим обслуживания.

Связанный контент