docker-compose 部署 mysql 時遇到錯誤:解決卷綁定的問題
在 Ubuntu 系統中使用 docker compose 部署 mysql 時,你遇到了一個錯誤,錯誤信息為:
mysqld: can't read the directory of '/etc/mysql/conf.d/' (os error 2 - no such file or directory)
登錄后復制
問題分析
你提供的 docker compose 配置文件中的卷綁定為:
- /data/docker/mysql/etc:/etc/mysql:ro
登錄后復制
這意味著 docker 容器中的 /etc/mysql 目錄會被映射到宿主機上的 /data/docker/mysql/etc 目錄。然而,你的錯誤信息表明容器找不到 /etc/mysql/conf.d 目錄。
解決方法
根據錯誤信息,你的宿主機上的 /data/docker/mysql/etc 目錄中沒有 conf.d 子目錄。這個目錄在容器的啟動過程中會被用到。
要解決這個問題,請確保:
- 在宿主機上創建 /data/docker/mysql/etc/conf.d 目錄。
- 從容器中復制 my.cnf 等必要文件到該目錄。
修改后的 docker compose 配置文件如下:
volumes: - /data/docker/mysql/mysql:/var/lib/mysql - /data/docker/mysql/etc:/etc/mysql:ro - /data/docker/mysql/etc/conf.d:/etc/mysql/conf.d:ro # 添加 conf.d 卷綁定
登錄后復制
確保上述步驟完成后,重新啟動 docker compose 部署,錯誤應該消失。