ファイル構造
1 2 3 4 5 6 7 8 9 |
yuta:〜/ mysql $ツリー 。 ├──docker-compose.yml └──ボリューム ├──データ └──init └──init.sql 3つのディレクトリ、2つのファイル |
docker-compose.ymlを書く
/docker-entrypoint-initdb.d
にシェルやsqlスクリプトなどを配置しておくことで、mysqlのコンテナイメージ起動時に実行することができる
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 |
<span class="na">バージョン</span><span class="pi">:</span> <span class="s2">「</span><span class="s">3」</span> <span class="na">services </span><span class="pi">:</span> <span class="na">mysql </span><span class="pi">:</span> <span class="na">image </span><span class="pi">:</span> <span class="s">mysql:latest </span> <span class="na">environment </span><span class="pi">:</span> <span class="na">MYSQL_ROOT_PASSWORD </span><span class="pi">:</span> <span class="s">pass </span> <span class="na">volumes </span><span class="pi">:</span> <span class="pi">- </span> <span class="pi">. </span><span class="pi">/ </span><span class="s">volumes </span> <span class="pi">/ </span> <span class="s">init/ </span><span class="pi">: </span><span class="pi">/ </span><span class="s">docker-entrypoint-initdb.d-./volumes/data/:/var/lib/mysql</span> |
初回に実行するsqlを用意
init.sql
1 2 3 4 5 6 7 8 9 10 11 |
DROP DATABASE IF EXISTSサンプル; CREATE DATABASEサンプル。 USEサンプル; DROP TABLE IF EXISTS name; CREATE TABLE名( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY、 名前TEXT NOT NULL )DEFAULT CHARACTER SET = utf8; INSERT INTO name(name)VALUES( "田所")、( "浩二")、( "令和"); |
起動
1 |
docker-compose up -d |
確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
yuta:〜/ mysql $ yuta:〜/ mysql $ d ps コンテナーIDイメージコマンド作成されたステータスポート名 76412daa6954 mysql:latest "docker-entrypoint.s…" 30秒前30秒前0.0.0.0:3306 ->3306/tcp、33060/tcp mysql_mysql_1 yuta:〜/ mysql $ vim docker-compose.yml yuta:〜/ mysql $ d ps コンテナーIDイメージコマンド作成されたステータスポート名 76412daa6954 mysql:latest "docker-entrypoint.s…" 39秒前39秒前0.0.0.0:3306 ->3306/tcp、33060/tcp mysql_mysql_1 yuta:〜/ mysql $ d exec -it 76412daa6954 / bin / bash root @ 76412daa6954:/# root @ 76412daa6954:/#mysql エラー1045(28000):ユーザー 'root' @ 'localhost'のアクセスが拒否されました (パスワードを使用:NO) root @ 76412daa6954:/#mysql -uroot -ppass mysql:[警告]コマンドラインインターフェイスでパスワードを使用すると、安全でない場合があります。 MySQLモニターへようこそ。コマンドは;で終わります。または\ g。 MySQL接続IDは9です サーバーのバージョン:8.0.21 MySQL Community Server-GPL Copyright(c)2000、2020、Oracleおよび/またはその関連会社。全著作権所有。 Oracleは、Oracle Corporationの登録商標です。 アフィリエイト。その他の名称は、それぞれの商標です。 所有者。 「ヘルプ」と入力します。または '\ h'を使用してください。現在の入力ステートメントをクリアするには、 「\ c」と入力します。 mysql>データベースを表示します。 + -------------------- + | データベース| + -------------------- + | information_schema | | mysql | | performance_schema | | サンプル| | sys | + -------------------- + 5行セット(0.00秒) mysql> mysql>サンプルを使用 テーブル名と列名を補完するためのテーブル情報の読み取り この機能をオフにして、-Aを使用してより迅速に起動できます。 データベースが変更されました mysql> mysql>テーブルを表示します。 + ------------------ + | Tables_in_sample | + ------------------ + | 名前| + ------------------ + セット内の1行(0.00秒) mysql> |
参考
https://qiita.com/juhn/items/274e44ee80354a39d872
https://noumenon-th.net/programming/2019/04/01/docker-entrypoint-initdb01/