如何预先配置和预填充MySQL官方Docker容器?
我想基于官方的MySQL docker容器镜像构建一个新的MySQL镜像。我想减少运行图像时需要添加的参数数量。 (例如-e MYSQL_USER
,-e MYSQL_DATABASE
,甚至-e MYSQL_ROOT_PASSWORD='rootsecret'
) 已经包含我的全局变量设置和我的创建数据库SQL文件在文件夹中。如何预先配置和预填充MySQL官方Docker容器?
如何添加我的所有设置并创建一个新图像以简单地docker run mysql:config1
docker run mysql:config2
等等?
你可以通过建立自己的MySQL码头工人形象一个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 build my-ubuntu-mysql-docker
然后,你必须把它推到码头工人集线器,然后你可以用它来启动一个新的泊坞窗容器是这样的:
docker run -d -p 2222:22 -p 3306:3306 --name my-ubuntu-mysql-docker ...
其中2222是本地ssh端口映射到码头集装箱的ssh端口22,3306是本地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'
由于官方泊坞窗网站上的文件中指出:
当容器启动的第一次,一个新的数据库 将使用提供的 配置变量创建并初始化指定的名称。此外,它将执行 扩展名为.sh,.sql和.sql.gz的文件,这些文件位于 /docker-entrypoint-initdb.d中。文件将按字母顺序执行 。