mysql - 如何通过Dockerfile设置max_allowed_pa​​cket、max_allowed_pa​​cket、character_set_server、collat​​ion-server等mysql系统变量?

标签 mysql docker dockerfile

我正在为 mysql 使用 Docker。需要在Dockerfile中设置mysql的max_allowed_pa​​cket、character_set_server、collat​​ion-server等系统变量。我尝试使用 Dockerfile 中提供的以下命令。但它不工作。

docker 文件:

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"]

构建命令:

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"]

作为替代方案,您可以将自定义配置文件放入 /etc/mysql/conf.d

自定义mysql.cnf:

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

docker 文件:

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

更多here

关于mysql - 如何通过Dockerfile设置max_allowed_pa​​cket、max_allowed_pa​​cket、character_set_server、collat​​ion-server等mysql系统变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44261591/

相关文章:

mysql - 在传输数据的同一页面上插入查询

mysql - Node.JS Azure MySQL { [错误 : Cannot enqueue Query after fatal error. ] 代码 : 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR' , 致命: false }

docker - 自动输入以选择Dockerfile中的脚本

php - 数据库连接和功能?

python - 如何在 Django 中为模型创建索引?

database-design - 包含 TB 及以上规模数据的 Elasticsearch 集群的推荐设置是什么?

docker - Nginx docker compose - 卷添加 nginx.conf(反向代理)

docker - 将 docker-compose.yml 文件转换为 kubernetes

用于多环境本地开发的 Docker

docker - 为什么我们需要在 Dockerfile 中有一个 Alpine 或 Ubuntu 基础镜像?