Dockerfile配置未成功添加MariaDB用户问题排查
问题分析与修复方案
首先,核心问题出在环境变量名称写错了,这也是导致普通用户无法创建的关键原因。
错误点1:环境变量不符合官方镜像规范
MariaDB官方镜像(包括同体系的MySQL镜像)初始化普通用户时,识别的密码变量是MYSQL_PASSWORD,而你写的是MYSQL_USER_PASSWORD——镜像的初始化脚本根本不会读取这个自定义的变量名,自然不会创建user1用户。
错误点2:RUN命令的逻辑问题
你的RUN apt-get update & apt-get upgrade -y里用了单&,这会让apt-get update在后台执行,紧接着就运行upgrade,大概率会因为更新源还没完成而失败。应该用&&来保证前一个命令执行成功后再执行下一个。
修正后的Dockerfile
FROM mariadb:10.3.5 RUN apt-get update && apt-get upgrade -y ENV MYSQL_USER=user1 \ MYSQL_PASSWORD=pass5 \ MYSQL_DATABASE=db \ MYSQL_ROOT_PASSWORD=XXX # 如果没有需要复制到容器根目录的文件/脚本,下面两行可以删掉 ADD . / WORKDIR /
补充说明
MariaDB官方镜像的初始化逻辑是:当容器首次启动且数据卷为空时,会自动执行初始化脚本,读取以下环境变量完成配置:
MYSQL_ROOT_PASSWORD:必填,设置root用户密码MYSQL_USER:可选,要创建的普通用户名MYSQL_PASSWORD:可选,对应普通用户的密码(必须和MYSQL_USER同时设置才会创建用户)MYSQL_DATABASE:可选,要预先创建的数据库,同时会把该库的所有权限赋予MYSQL_USER指定的用户
你已经清理了过往卷数据,所以修改后重新构建并启动容器,user1用户应该就能正常创建并使用了。
内容的提问来源于stack exchange,提问作者Coder99
相关产品推荐
相关产品推荐

