45_docker-compose_mysql8.0

鸟叔书發表於2024-03-13
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