如何预先configuration和预填充官方的MySQLdocker集装箱?

我想build立一个基于MySQL官方Docker容器镜像的新的MySQL镜像。 我想减less运行图像时需要添加的参数数量。 (例如, -e MYSQL_USER-e MYSQL_DATABASE ,甚至-e MYSQL_ROOT_PASSWORD='rootsecret' )已经包含我的全局variables设置和我的创build数据库SQL文件在docker-entrypoint-initdb.d文件夹中。

如何添加我所有的设置,并创build一个新的图像,以简单的docker run mysql:config1 docker run mysql:config2等?

您可以使用docker文件构build您自己的mysql docker镜像,configuration用户名,密码以及您可能需要的所有内容,构build镜像,将其上传到Docker中心,然后在启动新的Docker容器时使用先前构build的容器。

用一个mysql服务器构build一个Ubuntu镜像的Docker文件的例子就像下面这样(把它保存到一个名为Dockerfile的文件中):

 FROM ubuntu:latest RUN apt-get update \ && apt-get install -y apt-utils \ && { \ echo debconf debconf/frontend select Noninteractive; \ echo mysql-community-server mysql-community-server/data-dir \ select ''; \ echo mysql-community-server mysql-community-server/root-pass \ password 'Desired-Password'; \ echo mysql-community-server mysql-community-server/re-root-pass \ password 'Desired-Password'; \ echo mysql-community-server mysql-community-server/remove-test-db \ select true; \ } | debconf-set-selections \ && apt-get install -y mysql-server mysql-client 

然后像这样构build你的mysql docker容器(你必须在Docker文件被保存的文件夹中):

 docker build my-ubuntu-mysql-docker 

然后你必须把它推到docker集线器,然后你可以用它来启动一个新的docker集装箱,像这样:

 docker run -d -p 2222:22 -p 3306:3306 --name my-ubuntu-mysql-docker ... 

其中2222是本地ssh端口映射到docker集装箱的ssh端口22,3306是本地mysql端口映射到docker集装箱的mysql端口。

我希望这有帮助!

你想要做的是修改Mysql的图像入口点 ,请注意,你不需要传递所有的参数,大多数是可选的

以下内容必须写入Dockerfile

 FROM mysql:latest LABEL Name=mylabel Version=0.0.1 COPY path/to/sh/sql/sql.gz/files /docker-entrypoint-initdb.d ENV MYSQL_ROOT_PASSWORD='rootpassword' 

正如docker官方网站上的文件所述:

首次启动容器时,将使用提供的configurationvariables创build并初始化具有指定名称的新数据库。 此外,它将执行在/docker-entrypoint-initdb.d中find的具有扩展名.sh,.sql和.sql.gz的文件。 文件将按字母顺序执行。