如何通过Dockerfile设置mysql系统variables,如max_allowed_pa​​cket max_allowed_pa​​cket,character_set_server和collat​​ion-server?

我使用的是用于MySQL的Docker。 需要在Dockerfile中设置系统variables,如mysql的max_allowed_pa​​cket,character_set_server和collat​​ion-server。 我尝试使用Dockerfile中提供的下面的命令。 但它不工作。

Dockerfile:

FROM mysql:latest VOLUME /opt/data:/var/lib/mysql ENV MYSQL_ROOT_PASSWORD password RUN sed -i 's/^max_allowed_packet.*/max_allowed_packet = 1073741824/' /etc/mysql/my.cnf RUN sed -i "/\[mysqld]/a character-set-server=utf8mb4" /etc/mysql/my.cnf RUN sed -i 's/^collation-server.*/collation-server = utf8mb4_unicode_ci/' /etc/mysql/my.cnf CMD ["mysqld"] 

构build命令:

 sudo docker build -t mysqltest:1 . 

运行命令:

 sudo docker run -p 3306:3306 -restart=always -d mysqltest:1 

有几种方法,这是一个:

 CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--max-allowed-packet=1073741824"] 

作为替代scheme,您可以在/etc/mysql/conf.d自定义configuration文件

定制mysql.cnf:

 [mysqld] max_allowed_packet = 1073741824 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci 

Dockerfile:

 FROM mysql:latest COPY ./custom-mysql.cnf /etc/mysql/conf.d/ 

更多在这里