はじめに
こんにちは!
いきなりですが、今回は勉強がてらSQLの勉強するかなーと思いました。それでDockerで環境構築するか!と思いMySQLをインストールするまでのDockerfileとMySQLの起動をShellScriptで作りました!
せっかくなので記事にしていきます。
dockerfileの中身
dockerfileの全体の中身になります
FROM ubuntu:20.04
RUN apt update && apt upgrade
ENV TZ Asia/Tokyo
RUN apt install -y tzdata
RUN apt install -y --no-install-recommends mysql-server
WORKDIR /usr/share/mysql
COPY start_mysql.sh /usr/share/mysql
RUN chmod 755 /usr/share/mysql/start_mysql.sh
ちょっと中身を見ていきます。
まず今回はUbuntu20.04を指定をしてます。
そして次にaptをupdateしてupgradeします。
FROM ubuntu:20.04
RUN apt update && apt upgrade
次にこれ。
少しあれってなりました。なぜならばlogの方を見てほしいのですが、ここで先に進まなくなってしまいました。
ちょっと調べてみるとどうやら次の1行でタイムゾーンのインストールが必要なようです。RUN apt install -y tzdata
入れたら問題が解決しました。
RUN apt install -y tzdata
RUN apt install -y --no-install-recommends mysql-server
=> [3/3] RUN apt install -y mysql-server
=> => # questions will narrow this down by presenting a list of cities, representing
=> => # the time zones in which they are located.
=> => # 1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
=> => # 2. America 5. Arctic 8. Europe 11. SystemV
=> => # 3. Antarctica 6. Asia 9. Indian 12. US
=> => # Geographic area:
次に上から順にやっていることですが、
WORKDIR /usr/share/mysql
についてはコンテナに入ったらこの指定した箇所がスタートになります。
COPY start_mysql.sh /usr/share/mysql
についてはローカルにあるshellファイル(今回作成したstart_mysql.sh)をコンテナの/usr/share/mysqlのなかにコピーします。
RUN chmod 755 /usr/share/mysql/start_mysql.sh
についてはコピーしたstart_mysql.shの権限を変更しています。
WORKDIR /usr/share/mysql
COPY start_mysql.sh /usr/share/mysql
RUN chmod 755 /usr/share/mysql/start_mysql.sh
ShellScriptの中身
次にShellScriptの中身ですが、実行したらroot権限で入れるようにしました。
やっていることはmysqlをスタートしてログインするというコマンドを入れているだけです。
service mysql start
mysql -u root -p
Docker起動
次は実際に起動手順を書いていこうと思います。
以下で起動可能です!
$ docker image build -t sample-mysql:v1 .
$ docker image ls
$ docker run --name mysql-container -it sample-mysql:v1
以下でShellを実行します。
$ source start_mysql.sh
最後に
いかがでしたでしょうか。
もし余計なものがあったらすみません。。
ですが、こちらでMySQLが起動できました!
また本当はdockerfileにShellを実行するコマンドも書きたかったのですが、
ちょっとうまくいきませんでしたのでとりあえずはコンテナ内で叩くという方針にしました。。。
今回SQLの勉強をしたいため環境を作ったので別途SQLの記事も書きたいかなと思います!