Mysql
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
如果您使用的是官方
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
首先創建命名卷並確保必要的目錄具有適當的權限。