我想基于官方的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
等等?
答案 0 :(得分:1)
您可以使用docker文件构建自己的mysql docker镜像,配置用户名,密码以及您可能需要的所有其他内容,构建该图像,将其上传到docker hub,然后当您启动新的docker容器时,只需使用以前建造的集装箱。
用于构建带有mysql服务器的ubuntu映像的Docker文件的示例将类似于bellow(将其保存到名为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端口。
我希望这有帮助!
答案 1 :(得分:0)
你想要做的是修改Mysql的图像entry point 请注意,您不需要传递所有参数,其中大部分都是可选的
答案 2 :(得分:0)
以下内容必须写入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。文件将按字母顺序执行 顺序。