. │ .env │ docker-compose.yml │ └─mysql ├─config │ my.cnf │ └─data
mysql 目錄下的 data 爲數據目錄,mysql 的數據表、二進制日誌文件就在這裏。.env 文件包含了一些變量,這些變量能夠在 docker-compose.yml 文件中經過 ${variable_name} 來引用。mysql
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
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" # 掛載配置文件目錄
MYSQL_ROOT_PASSWORD
:這個不用解釋,root 用戶的密碼。
MYSQL_USER
,MYSQL_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 以上的版本)。sql
在 docker-compose.yml 目錄下執行:docker
docker-compose up數據庫
若是要在後臺運行,使用 docker-compose up -d
。命令行
中止容器:日誌
docker-compose downcode
若是是前臺運行的,使用:Ctrl + C
中止。這兩種方式在中止後都會刪除容器,下次啓動必須使用 up 命令。server
中止但不刪除容器:it
docker-compose stopio
使用 stop
中止後,再次啓動使用 start
命令便可。
docker exec-it mysql-docker sh
經過命令行鏈接到 容器
i
保持容器打開t
產生一個僞終端