주요 버전을 건너뛴 후 Nextcloud Docker 컨테이너를 수정하는 방법은 무엇입니까?

주요 버전을 건너뛴 후 Nextcloud Docker 컨테이너를 수정하는 방법은 무엇입니까?

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

처음 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';

변경 후 먼저 버전 21에서 nextcloud를 시작하여 모든 것이 여전히 있는지 확인할 수 있었습니다. 다음으로 나는 22와 23을 시작하고 단계적으로 업데이트할 수 있었습니다.

추신:

docker-compose exec --user www-data app php occ유지 관리 모드를 수동으로 업데이트하고 비활성화할 수 있습니다.

관련 정보