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
名前付きボリュームを作成し、必要なディレクトリに適切な権限があることを確認する前に、これらすべてを実行する必要があります。