如何使用max_allowed_pa​​cket的自定义值构建mysql docker镜像?

时间:2020-06-02 14:45:45

标签: mysql docker

如何为max_allowed_pa​​cket创建具有自定义值的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 |
+--------------------------+------------+

有什么建议吗?

2 个答案:

答案 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。