Nextcloud Docker 컨테이너가 VirtualBox 호스트에 데이터를 동기화하지 않습니다.

Nextcloud Docker 컨테이너가 VirtualBox 호스트에 데이터를 동기화하지 않습니다.

설정: 지난 주 동안 VirtualBox와 Vagrant를 사용하여 이전 2015 Macbook Pro의 Ubuntu Server VM에 Nextcloud Docker 인스턴스를 설정하려고 했습니다. VM에는 제한된 Nextcloud 컨테이너 스토리지만 있지만, 파일 스토리지를 담당하는 Docker 볼륨은 MBP에 마운트된 2TB APFS Seagate 드라이브의 VirtualBox에서 제공하는 공유 폴더에 있습니다. 프로세스는 Vagrant 파일에 다음과 같이 설명되어 있습니다.

# /vagrant/Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.box = 'ubuntu/focal64'
  config.vm.hostname = 'ubuntu-server'
  config.vm.network # some network configs
  config.vm.synced_folder '/Volumes/SEAGATE/data/nextcloud', '/media/nextcloud'
  config.vm.provision "shell", path: "setup.sh"

end

setup.sh다음 에서는

# /vagrant/setup.sh
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get -y install docker docker.io docker-compose
sudo docker-compose -f /vagrant/docker-compose.yml up -d

docker-compose.yml그리고 아래와 같은 거의 상용구에서,

# /vagrant/docker-compose.yml
version: '3'

services:

  nextcloud_db:
    image: mariadb:10.5
    container_name: nextcloud_db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - /media/nextcloud/var/lib/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  nextcloud:
    image: nextcloud
    container_name: nextcloud_server
    restart: always
    ports:
      - 8080:80
    links:
      - nextcloud_db
    volumes:
      - /media/nextcloud/var/www/html:/var/www/html
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      
volumes:
  nextcloud:
  nextcloud_db:

노트: Vagrant 인스턴스가 완료되면 보통 Nextcloud 서버 파일의 소유권과 그룹을 다시 로드하기 위해 인스턴스를 다시 시작합니다. 이는 이러한 서버 파일이 에 할당되고 , 또는 root에 할당되어야 하기 때문입니다 . 이러한 잘못된 할당으로 인해 특정 디렉토리와 파일(예: 및 ) 에 쓸 수 없게 될 수 있습니다.www-datasystemd-coredump/var/www/html/dataconfig.php

하지만,문제가 발생했습니다.어느무제한 스토리지가 할당되므로 계정에는 최소 1TB의 스토리지가 있어야 하며, 스토리지는 일반적으로 50GB 미만인 Vagrant 인스턴스 크기로 제한됩니다. 이는 /var/www/html/dataVagrant 인스턴스에 계정 데이터가 정확하게 위치해 있음에도 불구하고 ,아니요Macbook 호스트가 /Volumes/SEAGATE/data/nextcloud/var/www/html/data있어야 할 위치에 있습니다. 이는 설정 시 Nextcloud 볼륨이 Seagate 드라이브에서 완전히 동기화된다는 사실에도 불구하고, 이는 설정 후 어느 시점에서 파일 동기화가 실패함을 의미합니다.

이것을 재현하려면: 인스턴스 생성 vagrant up, 인스턴스 재시작, Nextcloud 시작 페이지 진입, Nextcloud 루트 사용자 생성에 사용됩니다. 루트 사용자의 데이터는 호스트가 아닌 게스트 가상 머신에서만 볼 수 있습니다.

요인: 이 문제는 공유 폴더가 외부에 마운트되었는지 또는 로컬 디렉터리에 있는지에 관계없이 Windows 및 MacOS 운영 체제 모두에서 발생합니다. 예를 들어 /Volumes/SEAGATE/data/nextcloud일부 로컬 디렉터리로 전환하면 ./local/nextcloud동일한 결과가 나타납니다. 또한 Docker 바인드 마운트로 전환해도 결과가 변경되지 않습니다.

나는 노력했다Docker 데이터 디렉터리 이동, 일반적으로 Docker 볼륨을 이동하는 방법을 찾고 있습니다. 관련이 있는 것으로 보이는 몇 가지 이전 질문이 있습니다.외부 저장소 - 폴더 및 파일이 인식되지 않습니다.

그렇다고 해결책이 없다는 말은 아닙니다. VM이 종료되어도 내부 동기화가 양호하므로 분명히 문제가 없습니다. 그래서 나의핵무기이제 옵션은 Macbook에서 Ubuntu를 이중 부팅하고 Docker를 로컬에 설치하여 이러한 헛소리를 제거하는 것입니다. 하지만 이것이 나의 최후의 수단이다. 나는 그것에 더 관심이있다이 문제는 이전에 폴더가 동기화되지 않는 문제가 없었기 때문에 발생합니다.

관련 정보