1
2

More than 1 year has passed since last update.

Dockerコンテナ内のmysqlでタイムゾーンのロードを行う

Posted at

Dockerの外からmysql内でコマンドをを実行する

Bash上からDockerコンテナ内のmysqlにコマンドを送りたかったときに四苦八苦しましたので、備忘録として残します。

環境

Ubuntu 18.04 LTS
Docker 19.03
MYSQLコンテナのMYSQLバージョン 5.7
ホストの/usr/share/zoneinfoがコンテナ内の/usr/share/zoneinfoにバインドされている

やりたい事

MySQLドキュメント:タイムゾーンのロード にある以下のコマンドをコンテナ外から実行したい

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

コンテナ形式で提供される海外製のプログラムを組み込む際に、構築をスクリプトにしたかった
手順内でmysqlにタイムゾーンをロードする処理がボトルネックになった
手動で実行すると以下のコマンドに

sudo docker exec -it {mysqlコンテナ名} bash
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
exit

mysql -u root mysql の1番目のmysqlがコマンドで、2番目のmysqlが、mysqlというデータベース名だという事に気づくまでに時間がかかった
出来上がったのが以下。

sudo docker exec -it {mysqlコンテナ名} sh -c 'mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p{パスワード} mysql -P 3306'

本当はパスワードをスクリプト内に書きたくないので、良い方法をご存じの方、ご教示いただけますと幸いです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2