如何预配置和预填充官方MySQL docker容器?

时间:2017-10-11 13:49:38

标签: mysql docker dockerfile

我想基于官方的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等等?

3 个答案:

答案 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。文件将按字母顺序执行   顺序。