问题出现
Linux在第一次安装有些软件时会有交互的输入的需求,比如mysql在首次安装时需要设置root的密码。
这在正常配置过程中没什么问题,但在使用DockerFile创建docker镜像时,则遇到了麻烦。
解决思路
如果将安装好的mysql-server使用apt remove从系统中卸载后,再次重新安装,则不再需要输入密码。另外当安装完一些软件后,可以使用dpkg-config来重新配置。
这样,就可以在安装软件前先对系统做好相关配置。接下来,就是需要获取软件的必要配置项
获取软件必要配置项
下载软件包
可以通过网上搜索方式下载相关的deb包,但众所周知,Linux的软件包版本多,很多情况下并不知道需要安装哪个版本。但可以使用apt来下载相应的软件包
1 | $ apt-get -d install -y mysql-server |
使用apt-get的-d参数,将只会下载,不进行安装。下载完毕后,软件包位于/var/cache/apt/archives
目录下。
获取配置项
进入软件包的存放目录,然后执行
1 | dpkg-preconfigure mysql-server-5.1_5.1.49-3_amd64.deb |
使用debconfig-show
来查看相应的配置项
1 | $ debconf-show mysql-server |
可以看到,有两项是必须配置的:mysql-server/root_password
和mysql-server/root_password_again
预配置
创建配置文件
在合适的目录下创建一个文件,例如mysql-passwd
,输入以下内容
1 | debconf mysql-server/root_password password 123456 |
加载配置
1 | $ debconf-set-selections mysql-passwd |
测试结果
再次安装mysql-server,将不再需要输入密码
1 | $ apt-get install -y mysql-server |
DockerFile处理
DockerFile应当尽量避免不需要的操作,所以,获取配置项的操作可以提前在实验环境中完成。
可将获取的命令行保存为本地文件,使用时copy过去。
1 | COPY ./mysql-passwd tmp/mysql-passwd |
或者是在DockerFile中直接生成,这时则可以将mysql passwd设置为参数
1 | RUN echo debconf mysql-server/root_password password 123456 > /tmp/mysql-passwd && echo debconf mysql-server/root_password_again password 123456 >> /tmp/mysql-passwd |
文章转载自Simble的小站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2949次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
851次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
494次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
432次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
287次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
278次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
272次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
253次阅读
2025-04-30 12:17:54
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
233次阅读
2025-04-28 11:01:25