如何在 mysql 服务器 8 docker-compose 文件中使用 custom.cnf?
how to use custom.cnf in mysql server 8 docker-compose file?
尝试在 docker-compose mysql 中使用自定义配置文件 8. docker-compose.yml 看起来像
version: '3'
services:
db:
container_name: test-mysql8
image: mysql/mysql-server:8.0
volumes:
- <host path to>/mycustom.cnf:/etc/mysql/conf.d/custom.cnf
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=testdb
- MYSQL_USER=testuser
- MYSQL_PASSWORD=testpassword
ports:
- "3306:3306"
restart: always
adminer:
image: adminer:latest
restart: always
ports:
- "8080:8080"
下面是自定义配置文件,mycustom.cnf
[mysqld]
max_allowed_packet=32M
character-set-server=utf8
collation-server=utf8_bin
transaction_isolation=READ-COMMITTED
运行 docker-compose up -d
并验证变量 docker exec -it test-mysql8 bash
mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%max_allowed_packet';
+---------------------------+------------+
| Variable_name | Value |
+---------------------------+------------+
| max_allowed_packet | 67108864 |
| mysqlx_max_allowed_packet | 67108864 |
| slave_max_allowed_packet | 1073741824 |
+---------------------------+------------+
3 rows in set (0.00 sec)
期望 mycustom.cnf
中给出的变量值是 max_allowed_packet=33554432
而不是 max_allowed_packet=67108864
我知道可以在组合文件中使用如下命令,但我想使用自定义文件
......
command: --character-set-server=utf8 --collation-server=utf8_bin --max-allowed-packet=32M --transaction-isolation=READ-COMMITTED
......
我尝试用 image: mysql:8.0
替换 image: mysql/mysql-server:8.0
并且成功了。
尝试在 docker-compose mysql 中使用自定义配置文件 8. docker-compose.yml 看起来像
version: '3'
services:
db:
container_name: test-mysql8
image: mysql/mysql-server:8.0
volumes:
- <host path to>/mycustom.cnf:/etc/mysql/conf.d/custom.cnf
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=testdb
- MYSQL_USER=testuser
- MYSQL_PASSWORD=testpassword
ports:
- "3306:3306"
restart: always
adminer:
image: adminer:latest
restart: always
ports:
- "8080:8080"
下面是自定义配置文件,mycustom.cnf
[mysqld]
max_allowed_packet=32M
character-set-server=utf8
collation-server=utf8_bin
transaction_isolation=READ-COMMITTED
运行 docker-compose up -d
并验证变量 docker exec -it test-mysql8 bash
mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%max_allowed_packet';
+---------------------------+------------+
| Variable_name | Value |
+---------------------------+------------+
| max_allowed_packet | 67108864 |
| mysqlx_max_allowed_packet | 67108864 |
| slave_max_allowed_packet | 1073741824 |
+---------------------------+------------+
3 rows in set (0.00 sec)
期望 mycustom.cnf
中给出的变量值是 max_allowed_packet=33554432
而不是 max_allowed_packet=67108864
我知道可以在组合文件中使用如下命令,但我想使用自定义文件
......
command: --character-set-server=utf8 --collation-server=utf8_bin --max-allowed-packet=32M --transaction-isolation=READ-COMMITTED
......
我尝试用 image: mysql:8.0
替换 image: mysql/mysql-server:8.0
并且成功了。