利用Mysql官方提供Sakila資料庫的schema以及data,來做一個Docker mysql server容器。
先下載sakila-db並解壓縮。
檔案結構:
.
└── sakila-db
├── sakila.mwb
├── sakila-data.sql
└── sakila-schema.sql建立一個檔案,叫作docker-compose.yml,裡面如下:
version: "3.9"
services:
db:
image: mysql:8.0
container_name: mysql-db
restart: always
tty: true
environment:
MYSQL_DATABASE: sakila
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: ${USER}
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./sakila-db:/docker-entrypoint-initdb.d其中,
MYSQL_ROOT_PASSWORD : root的密碼,root擁有最高權限。
MYSQL_DATABASE : 資料庫名稱,選擇性的變數。
MYSQL_USER : 使用者名稱,選擇性的變數。對於 MYSQL_DATABASE 有最高權限。
MYSQL_PASSWORD : 使用者密碼
放進/docker-entrypoint-initdb.d的檔案會在container建立時,按照字母順序執行 .sh, .sql 以及 .sql.gz為副檔名的檔案。所以如果要執行sakila的腳本,volumes下面可以寫 ./sakila-db:/docker-entrypoint-initdb.d,只是裡面的檔名要改成schema會先執行的名稱。
目前的檔案結構:
.
├── docker-compose.yml
└── sakila-db
├── sakila.mwb
├── sakila-1-schema.sql
└── sakila-2-data.sql開始建置:
docker-compose up -d
docker exec -it mysql-db mysql -u ${USER} -p sakila輸入完密碼後,應該能成功登入contianer 的 mysql
執行SHOW TABLES;後,會看到如下:
+----------------------------+
| Tables_in_sakila |
+----------------------------+
| actor |
| actor_info |
| address |
| category |
| city |
| country |
| customer |
| customer_list |
| film |
| film_actor |
| film_category |
| film_list |
| film_text |
| inventory |
| language |
| nicer_but_slower_film_list |
| payment |
| rental |
| sales_by_film_category |
| sales_by_store |
| staff |
| staff_list |
| store |
+----------------------------+表示資料庫建立成功,現在可以開始使用資料。