Последняя активность 9 months ago

此 docker-compose.yml 配置 MySQL 8.0,透過環境變數管理使用者帳密,並使用 Volume 持久化資料庫資料,確保資料不因容器重啟而遺失。適用於開發及測試環境,可搭配 .env 檔案提升安全性。

Версия a1019e9d0234e0bb90f47ddc24c50829846e2962

.env Исходник
1MYSQL_USER=user
2MYSQL_PASSWORD=password
3MYSQL_ROOT_PASSWORD=rootpassword
README.md Исходник
變數 作用 預設值
MYSQL_DATABASE 預設建立的資料庫 myapp
MYSQL_USER 普通使用者帳號 user
MYSQL_PASSWORD 普通使用者密碼 password
MYSQL_ROOT_PASSWORD Root 使用者密碼 rootpassword
docker exec -it mysql-container mysql -uroot -p
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
docker-compose.yml Исходник
1services:
2 mysql:
3 container_name: mysql-container
4 image: mysql:8.0
5 ports:
6 - "3306:3306"
7 environment:
8 MYSQL_DATABASE: myapp
9 MYSQL_USER: ${MYSQL_USER}
10 MYSQL_PASSWORD: ${MYSQL_PASSWORD}
11 MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
12 volumes:
13 - ./mysql_data:/var/lib/mysql
14 - ./mysql_data/my.cnf:/etc/mysql/my.cnf
15 restart: always
16
my.cnf Исходник
1# ./mysql_data/my.cnf
2
3[mysqld]
4max_connections = 150
5table_open_cache = 400
6innodb_buffer_pool_size = 512M
7innodb_redo_log_capacity = 256M
8innodb_flush_log_at_trx_commit = 1
9sync_binlog = 0
10log_bin_trust_function_creators = 1
11authentication_policy = 'mysql_native_password'
12skip-name-resolve
13
mysql_database_table_info.sql Исходник
1SELECT TABLE_SCHEMA AS DATABASE_NAME,
2 TABLE_NAME,
3 TABLE_ROWS AS RECORDS,
4 ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB
5FROM INFORMATION_SCHEMA.TABLES
6ORDER BY DATABASE_NAME, SIZE_MB DESC;
7