docker의 nextcloud - 데이터베이스 초기화 중 오류가 발생했습니다.

docker의 nextcloud - 데이터베이스 초기화 중 오류가 발생했습니다.

nextcloud 컨테이너를 시작할 때 docker-compose up다음 오류가 발생했습니다.

db_1_7bb6e5f5b725 | Initializing database
db_1_7bb6e5f5b725 | mkdir: cannot create directory '/var/lib/mysql//mysql': Permission denied
db_1_7bb6e5f5b725 | Fatal error Can't create database directory '/var/lib/mysql//mysql'
db_1_7bb6e5f5b725 | 
db_1_7bb6e5f5b725 | The latest information about mysql_install_db is available at
db_1_7bb6e5f5b725 | https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
test_db_1_7bb6e5f5b725 exited with code 1

지정된 docker-compose는 다음과 같습니다.

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    user: www-data
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

답변1

당신이 사용하는 경우공식 mariadbDocker 이미지, 스크립트에서는 docker-entrypoint.sh컨테이너를 실행하는 사용자가 경로에 쓸 수 있어야 합니다. /var/lib/mysql그렇지 않으면 컨테이너가 시작되지 않습니다.

귀하의 것에서는 컨테이너 에 마운트될 명명된 볼륨을 docker-compose.yml정의합니다 . 를 실행하기 전에 지정된 볼륨을 생성하지 않은 경우 일반적 으로 를 실행할 때 권한이 있는 사용자이기 때문에 해당 볼륨의 디렉터리가 잘못된 권한으로 생성되었을 수 있습니다 .dbdbdbdocker-compose up/var/lib/mysqldocker-compose

항상 호스트에서 볼륨을 검사할 수 있어야 하며 볼륨을 읽기 전용으로 새 컨테이너에 마운트하여 볼 수도 있습니다(최소 이미지 또는 빈 이미지가 가장 잘 작동함). 호스트에서 실행하여 docker volume inspect db호스트를 기준으로 파일 위치를 가져올 수 있으며, 실행하여 docker volume listdocker-compose가 볼륨 이름을 다르게 지정하는지 확인할 수 있습니다. 외부 파일 백엔드가 없는 경우 chown컨테이너 내에서 필요한 디렉터리를 사용자의 UID로 직접 가리킬 수 있어야 합니다.

docker-compose클러스터를 실행하기 전에 먼저 db명명된 볼륨을 생성하고 필요한 디렉터리에 적절한 권한이 있는지 확인하기 전에 이 모든 작업을 수행해야 합니다 .

관련 정보