我想基于官方的MySQL docker容器镜像构建一个新的MySQL镜像。我想减少运行映像时需要添加的参数数量。(例如。 -e MYSQL_USER
,-e MYSQL_DATABASE
甚至-e MYSQL_ROOT_PASSWORD='rootsecret'
) 这已经包括了我对全局变量的设置和我在docker-entrypoint-initdb.d
文件夹中的创建数据库 SQL 文件。
如何添加所有设置并创建新图像以简单docker run mysql:config1
docker run mysql:config2
等等?
您可以使用 docker 文件构建自己的 mysql docker 映像,配置用户名、密码和您可能需要的所有其他内容,构建该映像,将其上传到 docker 中心,然后在启动新的 docker 容器时,您只需使用以前构建的容器。
一个Docker 文件的示例来构建一个内部带有 mysql 服务器的 ubuntu 映像,如下所示(将其保存到名为 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
然后像这样构建你的 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 是映射到 docker 容器的 ssh 端口 22 的本地 ssh 端口,3306 是映射到 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 官方网站上的文档中所述:
首次启动容器时,新数据库具有 将使用提供的名称创建并初始化指定的名称 配置变量。此外,它将执行文件 在 中找到的扩展.sh、.sql 和 .sql.gz /docker-entrypoint-initdb.d.文件将按字母顺序执行 次序。
您要做的是修改Mysql的图像入口点请注意,您不需要传递所有参数,其中大多数是可选的