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
당신이 사용하는 경우공식 mariadb
Docker 이미지, 스크립트에서는 docker-entrypoint.sh
컨테이너를 실행하는 사용자가 경로에 쓸 수 있어야 합니다. /var/lib/mysql
그렇지 않으면 컨테이너가 시작되지 않습니다.
귀하의 것에서는 컨테이너 에 마운트될 명명된 볼륨을 docker-compose.yml
정의합니다 . 를 실행하기 전에 지정된 볼륨을 생성하지 않은 경우 일반적 으로 를 실행할 때 권한이 있는 사용자이기 때문에 해당 볼륨의 디렉터리가 잘못된 권한으로 생성되었을 수 있습니다 .db
db
db
docker-compose up
/var/lib/mysql
docker-compose
항상 호스트에서 볼륨을 검사할 수 있어야 하며 볼륨을 읽기 전용으로 새 컨테이너에 마운트하여 볼 수도 있습니다(최소 이미지 또는 빈 이미지가 가장 잘 작동함). 호스트에서 실행하여 docker volume inspect db
호스트를 기준으로 파일 위치를 가져올 수 있으며, 실행하여 docker volume list
docker-compose가 볼륨 이름을 다르게 지정하는지 확인할 수 있습니다. 외부 파일 백엔드가 없는 경우 chown
컨테이너 내에서 필요한 디렉터리를 사용자의 UID로 직접 가리킬 수 있어야 합니다.
docker-compose
클러스터를 실행하기 전에 먼저 db
명명된 볼륨을 생성하고 필요한 디렉터리에 적절한 권한이 있는지 확인하기 전에 이 모든 작업을 수행해야 합니다 .