如何为max_allowed_packet创建具有自定义值的mysql docker镜像?
#my-custom.cnf
[mysqld]
max_allowed_packet=64M
#Dockerfile
FROM mysql/mysql-server:5.7
RUN echo "Custom mysql build"
COPY ./my-custom.cnf /etc/mysql/conf.d/
RUN echo "Listing customized configurations" && cat /etc/mysql/conf.d/lj-mysql.conf
自定义的mysql容器仍然仅显示4MB。
mysql> show variables like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 4194304 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
有什么建议吗?
答案 0 :(得分:1)
使用命令性命令可以解决此问题的一种方式
docker run -it -e MYSQL_ROOT_PASSWORD=<sql-pw> mysql:5.7 --max-allowed-packet=67108864
另一种方法是使用docker-compose
version: "3"
services:
data:
image: "mysql:5.7.20"
#(it is 64 mb mean 67108864 bytes)
command: --max_allowed_packet=67108864
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
- MYSQL_USER=user
- MYSQL_PASSWORD=user_password
使用docker-compose是启动docker容器的好方法,并且易于使用docker-compose。
答案 1 :(得分:0)
您应将docker volume用于此类目的。卷是用于持久化由Docker容器生成和使用的数据的首选机制。
docker run -d -v ./my-custom.cnf:/etc/mysql/conf.d/ mysql/mysql-server
这会将主机上的本地配置挂载到docker容器中,并以分离模式运行mysql。