2017-10-11 93 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中。文件將按字母順序執行 。