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

aya*_*ada 3 docker

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

我需要将这两行添加到 my.cnf 中才能使我的应用程序正常工作:

[client]
protocol=tcp
Run Code Online (Sandbox Code Playgroud)

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

Adi*_*iii 5

您可以在构建时复制

FROM mysql
COPY my_custom.cnf /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

或者另一种方法是更改​​配置文件并在运行时挂载配置文件,这样您就不需要重建或维护自定义映像。

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
Run Code Online (Sandbox Code Playgroud)

使用自定义 MySQL 配置文件

MySQL 的默认配置可以在 中找到 ,其中可能包含 !includedir或/etc/mysql/my.cnf等其他目录。请检查 mysql 映像本身内的相关文件和目录以获取更多详细信息。/etc/mysql/conf.d/etc/mysql/mysql.conf.d

如果/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 
Run Code Online (Sandbox Code Playgroud)

这将启动一个新容器 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
Run Code Online (Sandbox Code Playgroud)