1. 安裝 Docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.拉取映象
docker pull registry.cn-hangzhou.aliyuncs.com/ns-2023/lib-2023:mysql-8.0
3. 配置檔案 my.conf
# 服務端引數配置
[mysqld]
user=mysql # MySQL啟動使用者
default-storage-engine=INNODB # 建立新表時將使用的預設儲存引擎
character-set-server=utf8mb4 # 設定mysql服務端預設字符集
collation-server = utf8mb4_general_ci # 資料庫字符集對應一些排序等規則,注意要和character-set-server對應
pid-file = /var/lib/mysql/mysqld.pid # pid檔案所在目錄
socket = /var/lib/mysql/mysqld.sock # 用於本地連線的socket套接字
datadir = /var/lib/mysql # 資料檔案存放的目錄
log-error = /var/lib/mysql/error.log
#bind-address = 127.0.0.1 # MySQL繫結IP
expire_logs_days=7 # 定義清除過期日誌的時間(這裡設定為7天)
# 設定client連線mysql時的字符集,防止亂碼
init_connect='SET NAMES utf8mb4'
# 是否對sql語句大小寫敏感,1表示不敏感
lower_case_table_names = 1
# 執行sql的模式,規定了sql的安全等級, 暫時遮蔽,my.cnf檔案中配置報錯
#sql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 事務隔離級別,預設為可重複讀,mysql預設可重複讀級別(此級別下可能引數很多間隙鎖,影響效能)
transaction_isolation = READ-COMMITTED
# TIMESTAMP如果沒有顯示宣告NOT NULL,允許NULL值
explicit_defaults_for_timestamp = true
#它控制著mysqld程序能使用的最大檔案描述(FD)符數量。
#需要注意的是這個變數的值並不一定是你設定的值,mysqld會在系統允許的情況下儘量獲取更多的FD數量
open_files_limit = 65535
# 允許最大連線數
max_connections=200
#最大錯誤連線數
max_connect_errors = 600
[client]
default-character-set=utf8mb4 # 設定mysql客戶端預設字符集
4. docker-compose.yml
# 可參考: https://hub.docker.com/_/mysql
version: "3"
services:
mysql:
image: registry.cn-hangzhou.aliyuncs.com/ns-2023/lib-2023:mysql-8.0 # 原映象`mysql:8.0`
container_name: mysql_3307 # 容器名為'mysql_3307'
restart: unless-stopped # 指定容器退出後的重啟策略為始終重啟,但是不考慮在Docker守護程序啟動時就已經停止了的容器
volumes:
# 資料卷掛載路徑設定,將本機目錄對映到容器目錄
- "./mysql/my.cnf:/etc/mysql/my.cnf"
- "./mysql/data:/var/lib/mysql"
# - "./mysql/conf.d:/etc/mysql/conf.d"
- "./mysql/mysql-files:/var/lib/mysql-files"
environment:
# 設定環境變數,相當於docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
MYSQL_ROOT_PASSWORD: root # 設定root使用者密碼
MYSQL_DATABASE: demo # 初始化的資料庫名稱
ports:
# 對映埠
- "3307:3307"
5. 執行
docker-compose -f docker-compose.yml -p mysql80 up -d
docker exec -it mysql_3307 /bin/bash
mysql -h127.0.0.1 -uroot -proot