Docker:构建映像时编辑my.cnf

时间:2019-11-26 09:57:19

标签: docker

我对docker很陌生。我想知道是否有一种方法可以“硬编码” docker映像的my.cnf设置,而不是编辑docker容器。

我需要将这两行添加到my.cnf中,以使我的应用正常工作:

[client]
protocol=tcp

当前,我构建映像来运行容器并通过进入/etc/mysql/my.cnf对其进行手动编辑。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在构建时复制

FROM mysql
COPY my_custom.cnf /etc/mysql/my.cnf

或另一种方法是更改​​配置文件并在运行时挂载配置文件,因此您无需重建或维护自定义映像。

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

使用自定义MySQL配置文件

  

MySQL的默认配置可以在下面找到   /etc/mysql/my.cnf,可以!includedir附加目录,例如   为/etc/mysql/conf.d/etc/mysql/mysql.conf.d。请检查   mysql映像本身中的相关文件和目录,用于   更多细节。

     

如果/my/custom/config-file.cnf是自定义的路径和名称   配置文件,您可以像这样启动mysql容器(注意   在此仅使用自定义配置文件的目录路径   命令):

 $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d
 mysql:tag 
  

这将启动一个新的容器some-mysql,其中   MySQL实例使用组合的启动设置   /etc/mysql/my.cnf/etc/mysql/conf.d/config-file.cnf,以及   后者的设置优先。

https://hub.docker.com/_/mysql

更新:

仅对于TCP,不需要安装配置,只需使用--protocol标志运行即可。

docker run --rm -it -e MYSQL_ALLOW_EMPTY_PASSWORD=test mysql:5.6.24 --protocol=TCP
相关问题