我想基于官方 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 hub,然后当您启动新的 docker 容器时,您只需使用先前构建的容器。
用于构建内部包含 mysql 服务器的 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
然后像这样构建你的 mysql docker 容器(你必须位于保存 Docker 文件的文件夹中):
docker build my-ubuntu-mysql-docker
然后你必须将其推送到 docker hub,然后你可以使用它来启动一个新的 docker 容器,如下所示:
docker run -d -p 2222:22 -p 3306:3306 --name my-ubuntu-mysql-docker ...
其中2222是映射到docker容器的ssh端口22的本地ssh端口,3306是映射到docker容器的mysql端口的本地mysql端口。
希望这会有所帮助!
关于mysql - 如何预配置和预填充官方MySQL docker容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689953/