2017-10-11 91 views
0

我想基于官方的MySQL docker容器镜像构建一个新的MySQL镜像。我想减少运行图像时需要添加的参数数量。 (例如-e MYSQL_USER-e MYSQL_DATABASE,甚至-e MYSQL_ROOT_PASSWORD='rootsecret') 已经包含我的全局变量设置和我的创建数据库SQL文件在文件夹中。如何预先配置和预填充MySQL官方Docker容器?

如何添加我的所有设置并创建一个新图像以简单地docker run mysql:config1docker run mysql:config2等等?

回答

0

你,你会想要做的是修改MySQL的形象entry point 并请注意,您并不需要通过所有参数,大部分都是可选的

1

你可以通过建立自己的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端口。

我希望这有助于!

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