Docker Compose を使用して MySQL をインストールし、発生した問題を解決する
導入
この記事では、Docker Compose を使用して MySQL をインストールし、発生した問題を解決する方法を詳しく紹介します。
バージョンは以下の通りです
名前 | バージョン |
---|---|
MySQL | 8.1.0 |
CentOS | 7.6+ |
ドッカー | 20.10.22 |
Docker Compose | 1.23.1 |
1. インストール手順
全体的なファイル構造:
[root@localhost mysql] tree -L 1
.
├── data
├── docker-compose.yml
└── log
1.1 データの永続性
# 创建持久化文件夹
[root@localhost mysql] mkdir -p log
[root@localhost mysql] mkdir -p data
[root@localhost mysql] chmod +777 log
[root@localhost mysql] chmod +777 data
1.2 docker compose ファイルの作成
#创建docker compose文件
[root@localhost mysql] vim docker-compose.yml
具体的な内容は以下の通りです。
version: "3.7"
networks:
mysql: #对应“mysql网桥”
external: true
services:
mysql:
image: mysql:8
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: "root" # root密码
# MYSQL_USER: test # 新用户账号
# MYSQL_PASSWORD: root # 新用户 密码
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
- ./log:/var/log/mysql
networks:
- mysql #网桥 这里的网桥名称“mysql”
1.3 インストールと使用方法
# 执行安装
[root@localhost mysql] docker network create mysql
a4465fd58291621302219908b7407a8a4586621b6817162cc359e1286fec8a6a
[root@localhost mysql] docker-compose up -d
Creating mysql ... done
[root@localhost mysql]
Navicat ホスト IP:3306
root アカウントのパスワードも root です
2. 問題解決
2.1 ブリッジ作成時のエラー
docker-compose up -d を直接実行し、エラーを報告します。
エラー: ネットワーク mysql が外部として宣言されましたが、見つかりませんでした。
[root@localhost mysql] docker-compose up -d
ERROR: Network mysql declared as external, but could not be found. Please create the network manually using `docker network create mysql` and try agai
解決策:
エラープロンプトに従って、最初にコマンドを実行します。ドッカーネットワークがmysqlを作成する
docker-compose up -d を再度実行します
2.2 MySQL バージョンのアップグレード時のエラー
MySQL イメージのバージョンを最新 (mysql:latest) にアップグレードし、docker-compose up -d を再実行すると、次のエラー メッセージが表示されます。
[エラー] [MY-010457] [サーバー] --initialize が指定されましたが、データ ディレクトリにファイルがあります。中止中。
023-08-03T02:17:11.613448Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2023-08-03T02:17:11.613472Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2023-08-03T02:17:11.613582Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-08-03T02:17:11.613960Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.1.0) MySQL Community Server - GPL
解決策:
1. MySQL コンテナを削除します。
[root@localhost mysql] docker stop mysql
[root@localhost mysql] docker rm mysql
2. マップされた永続ディレクトリ データ (./data:/var/lib/mysql) を削除します。
[root@localhost mysql] rm -rf data
3. 永続化フォルダーとコンテナーを再作成します。
[root@localhost mysql] mkdir -p data
[root@localhost mysql] chmod +777 data
[root@localhost mysql] docker-compose up -d
Creating mysql ... done
[root@localhost mysql] docker logs -f mysql # 查看日志是否安装成功