目錄結(jié)構(gòu)
.
│ .env
│ docker-compose.yml
│
└─mysql
├─config
│ my.cnf
│
└─data
mysql 目錄下的 data 為數(shù)據(jù)目錄,mysql 的數(shù)據(jù)表、二進(jìn)制日志文件就在這里。.env 文件包含了一些變量,這些變量可以在 docker-compose.yml
文件中通過 ${variable_name}
來引用。
當(dāng)然也可以把 mysql 的目錄放到其它地方,這里圖個(gè)方便,直接放在 yml 文件同級(jí)目錄了。
.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
如果使用默認(rèn)配置,這個(gè)文件可以省略。
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" # 掛載數(shù)據(jù)目錄
- "${MYSQL_DIR}/config:/etc/mysql/conf.d" # 掛載配置文件目錄
Environment 變量
- MYSQL_ROOT_PASSWORD :這個(gè)不用解釋,root 用戶的密碼。
- MYSQL_USER,MYSQL_PASSWORD :這兩個(gè)變量為可選,創(chuàng)建一個(gè)新用戶,這個(gè)用戶在 MYSQL_DATABASE 變量指定的數(shù)據(jù)庫(kù)上擁有超級(jí)用戶權(quán)限。
- MYSQL_DATABASE :指定一個(gè)數(shù)據(jù)庫(kù),在容器啟動(dòng)時(shí)創(chuàng)建。
- MYSQL_ALLOW_EMPTY_PASSWORD :設(shè)置為 yes 允許 root 用戶的密碼為空。(不推薦)
- MYSQL_RANDOM_ROOT_PASSWORD :設(shè)置為 yes 將在容器啟動(dòng)時(shí)為 root 用戶生成一個(gè)隨機(jī)的密碼,密碼會(huì)顯示到標(biāo)準(zhǔn)輸出流(GENERATED ROOT PASSWORD:......)。
- MYSQL_ONETIME_PASSWORD :字面意思就是一次性密碼,為 root 用戶設(shè)置,第一次登錄后必須修改密碼(僅支持 5.6 以上的版本)。
運(yùn)行容器
在 docker-compose.yml 目錄下執(zhí)行:
> docker-compose up
如果要在后臺(tái)運(yùn)行,使用 docker-compose up -d
。
停止容器:
> docker-compose down
如果是前臺(tái)運(yùn)行的,使用:Ctrl + C 停止。這兩種方式在停止后都會(huì)刪除容器,下次啟動(dòng)必須使用 up 命令。
停止但不刪除容器:
> docker-compose stop
使用 stop 停止后,再次啟動(dòng)使用 start 命令即可。
總結(jié)
以上所述是小編給大家介紹的使用 docker-compose 運(yùn)行 MySQL的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!