Docker 運行 MySQL,使用 docker-compose


目錄結構

.
│  .env
│  docker-compose.yml
│
└─mysql
    ├─config
    │      my.cnf
    │
    └─data

mysql 目錄下的 data 為數據目錄,mysql 的數據表、二進制日志文件就在這里。.env 文件包含了一些變量,這些變量可以在 docker-compose.yml 文件中通過 ${variable_name} 來引用。

當然也可以把 mysql 的目錄放到其它地方,這里圖個方便,直接放在 yml 文件同級目錄了。

.env 文件

MYSQL_ROOT_PASSWORD=root
MYSQL_ROOT_HOST=%

MYSQL_DIR=./mysql

MySQL 配置文件 my.cnf

[mysqld]
character-set-server=utf8mb4
default-time-zone='+8:00'
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500

如果使用默認配置,這個文件可以省略。

docker-compose.yml

version: '3'

services:

  mysql-db:
    container_name: mysql-docker        # 指定容器的名稱
    image: mysql:8.0                   # 指定鏡像和版本
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST}
    volumes:
      - "${MYSQL_DIR}/data:/var/lib/mysql"           # 掛載數據目錄
      - "${MYSQL_DIR}/config:/etc/mysql/conf.d"      # 掛載配置文件目錄

Environment 變量

  • MYSQL_ROOT_PASSWORD :這個不用解釋,root 用戶的密碼。
  • MYSQL_USERMYSQL_PASSWORD :這兩個變量為可選,創建一個新用戶,這個用戶在 MYSQL_DATABASE 變量指定的數據庫上擁有超級用戶權限。
  • MYSQL_DATABASE :指定一個數據庫,在容器啟動時創建。
  • MYSQL_ALLOW_EMPTY_PASSWORD :設置為 yes 允許 root 用戶的密碼為空。(不推薦)
  • MYSQL_RANDOM_ROOT_PASSWORD :設置為 yes 將在容器啟動時為 root 用戶生成一個隨機的密碼,密碼會顯示到標准輸出流(GENERATED ROOT PASSWORD:......)。
  • MYSQL_ONETIME_PASSWORD :字面意思就是一次性密碼,為 root 用戶設置,第一次登錄后必須修改密碼(僅支持 5.6 以上的版本)。

運行容器

在 docker-compose.yml 目錄下執行:

> docker-compose up

如果要在后台運行,使用 docker-compose up -d

停止容器:

> docker-compose down

如果是前台運行的,使用:Ctrl + C 停止。這兩種方式在停止后都會刪除容器,下次啟動必須使用 up 命令。

停止但不刪除容器:

> docker-compose stop

使用 stop 停止后,再次啟動使用 start 命令即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM