我对docker很陌生。我想知道是否有一种方法可以“硬编码” docker映像的my.cnf设置,而不是编辑docker容器。
我需要将这两行添加到my.cnf中,以使我的应用正常工作:
[client]
protocol=tcp
当前,我构建映像来运行容器并通过进入/etc/mysql/my.cnf对其进行手动编辑。谢谢。
答案 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