とき開始ドッキングウィンドウMySQLが自動的に実行されたSQLみよう

あなたがドッキングウィンドウでMySQLコンテナを作成する場合、時には我々は、コンテナがデータベースとテーブルを開始することを期待構築されている自動初期化データは、コンテナを直接コンテナデータベースに接続された後、我々が開始できることを意味し、自動エントリーがあり、そのデータの。

実際には、公式ミラーMySQLは自動的にコンテナを開始するには、SQLスクリプトまたはシェルスクリプトを指定したとき、私たちは見て取る実行する能力をサポートすることであるMySQLの公式ミラーDockerfileを以下に示すように、

ここで説明する絵を書きます

呼び出すENTRYPOINT、設定された/entrypoint.shこのスクリプトを、私たちは、MySQL:8をローカルでこの画像を引っ張って、その後、ドッキングウィンドウがアップ実行開始とentrypoint.shの内側に、このスクリプトだものを見るために、コンテンツの一部がありますすべての.SH .SQLや固定ディレクトリ接尾辞ファイルから、および以下に示すように、その後、実行して:

ここで説明する絵を書きます

クリア原則、そして今、我々は再びそれを練習する必要があります。

ドッキングウィンドウにdisconf環境を設定する場合、MySQLデータベースを構築する必要があり、そして4つのSQLデータベースファイルは、テーブルの上にある最初のデータの操作を行い順次実行されるように、我々は二つのアプローチがあります。

  1. 実行するコンテナは、自動的に4つのSQLを実行する時期となるよう、/docker-entrypoint-initdb.d 4つのSQLディレクトリにファイルをコピーしますが、スクリプトのビューのスクリーンショット、複数のファイルの実行順序の点からスクリプトは、スクリプトの実行のテーブルを作成するために、データベースに遅れて作成された場合、指定されていない、しかし、(これは、テーブルを構築するために失敗につながるので、この方法は、SQL私たちのニーズを満たすコピーできない場合1つの順に4つのファイル要件を満たすことができSQL)。
  2. 次のようにSQLを実行するために私たち自身の必要に応じて、読み込みしたSHファイルを、実行します。
#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
source $WORK_PATH/$FILE_0;
source $WORK_PATH/$FILE_1;
source $WORK_PATH/$FILE_2; 
source $WORK_PATH/$FILE_3; 

これらは、環境変数ですFILE_0、WORK_PATH、シェルは非常に簡単で、かつ指定されたログインMySQLのSQLファイル、MYSQL_ROOT_PASSWORDを実行参照してください。

さんは次のように、書き方を、対応するDockerfileを見てみましょう:

# Docker image of disconf mysql
# VERSION 0.0.1
# Author: bolingcavalry

#基础镜像使用daocloud.io/library/mysql:8
FROM daocloud.io/library/mysql:8

#作者
MAINTAINER BolingCavalry <[email protected]>

#定义工作目录
ENV WORK_PATH /usr/local/work

#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

#定义sql文件名
ENV FILE_0 0-init_table.sql
ENV FILE_1 1-init_data.sql
ENV FILE_2 20151225.sql
ENV FILE_3 20160701.sql

#定义shell文件名
ENV INSTALL_DATA_SHELL install_data.sh

#创建文件夹
RUN mkdir -p $WORK_PATH

#把数据库初始化数据的文件复制到工作目录下
COPY ./$FILE_0 $WORK_PATH/
COPY ./$FILE_1 $WORK_PATH/
COPY ./$FILE_2 $WORK_PATH/
COPY ./$FILE_3 $WORK_PATH/

#把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/

#给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL

0-init_table.sql、1-init_data.sql、20151225.sql、私たちはSQLを実行したい20160701.sql 4つのファイル、ミラー構造のドッキングウィンドウのファイルをミラーにコピーされます。

完了すると、MySQLのフォルダのクローンの内部に、zq2599 / docker_disconf.gitコマンドラインドッキングウィンドウは、このフォルダに-t disconf_mysqlを構築し実行します:[email protected]:私のgithubののクローンを完了してください0.0.1ビルドミラーを;

そして、ドッキングウィンドウの実行を行う-name mysqldisconf -e MYSQL_ROOT_PASSWORD = 123456 -idt disconf_mysql:0.0.1は、下の赤いボックスは、あなたが私たちがSHファイル指定された場所を書くことがわかります-f mysqldisconfビューは、コンテナのログ、ドッキングウィンドウのログを実行し、コンテナを起動それが実行されています。

ここで説明する絵を書きます

私たちは、コンテナにドッキングウィンドウの幹部-it mysqldisconf / binに/ bashのを実行し、そこに本当にない、データベース内のデータを見に行きました。

-p123456ログmysqlの-uroot MySQLを実行した後、図は次のとおりです。

ここで説明する絵を書きます

あなたは、コンテナが私たちの目標を達成するために作成された後に自動的に実行されたSQLを証明することができ、アプリケーションや他の操作から*、ショーのデータベースを参照してくださいショーのテーブルを選択することができます。

私は公共の数の関心を歓迎します

ここに画像を挿入説明

おすすめ

転載: www.cnblogs.com/bolingcavalry/p/11495509.html