Como consertar um contêiner docker Nextcloud após pular uma versão principal?

Como consertar um contêiner docker Nextcloud após pular uma versão principal?

Estou executando minha instância privada do Nextcloud usando o docker (docker-compose). Tentei atualizar para uma versão mais recente do Nextcloud, mas não percebi que não deveria pular uma versão principal (de 21 para 23). Agora não consigo começar de jeito nenhum:

  • Quando tento iniciar o contêiner com a versão 23 e acionar a atualização, ele falha porque não é possível atualizar a partir da 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
    [...]
    
  • Quando tento iniciar o contêiner com a versão <23, ele falha porque pensa que os dados são da versão 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?
    

Existe uma maneira de forçar uma atualização ou começar com a versão 22?

Aqui está meu arquivo 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

Obrigado!

Responder1

Consegui resolver o problema alterando manualmente a versão no version.phparquivo do nextcloudvolume.

Isso pode causar problemas irreparáveis. Faça backup dos seus dados se quiser fazer o mesmo!

O caminho completo para esse arquivo era:/var/lib/docker/volumes/nextcloud_nextcloud/_data/version.php

Eu tinha um volume nextcloud antigo que criei quando configurei inicialmente o nextcloud. Acabei de usar o version.phpdaquele volume, pois estava bastante confiante de que tinha a versão correta.

Aqui está o que mudou:

"incorreta" 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';

"correto" 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';

Após essa mudança, eu poderia iniciar primeiro o nextcloud na versão 21, para verificar se tudo ainda estava lá. Em seguida, consegui iniciar e atualizar para 22 e 23 em etapas perfeitamente.

PS:

docker-compose exec --user www-data app php occPermite atualizar e desativar manualmente o modo de manutenção.

informação relacionada