0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud上のJenkinsの開発時にMySQL Conatinerでつまづいたこと2

Posted at

はじめに

引き続き、Could上のJenkinsにpipelineを作る際にmysql containerでつまづいたことを書いていきます。今回はmysqlすぐ落ちてしまうせいでJobも落ちる問題と、その解決方法について書いていきます。

前回の記事はこちら↓

環境

  • Cloud上のJenkins
  • Harbor

ざっくりテストJobの流れ

  1. localにあるdocker imageをHarborに上げる
  2. HarborのimageをJenkinsのジョブ内で呼ぶ
  3. Containerを起動させてテストを実行

つまづいたこと 2: MySQL containerの立ち上がりが遅いため、Jobが落ちてしまう

#log
mysqladmin: connect to server at 'mysql' failed
error: 'Can't connect to MySQL server on 'mysql' (111)'
Check that mysqld is running on mysql and that the port is XXXX.
You can check this by doing 'telnet mysql XXXX'

Pipelineを動かしてみたら、今度はMysqldが立ち上がっていないというエラーですぐjobが落ちてしまいました....

localのdocker composer up 後の流れを見ている感じ、MySQL containerの立ち上がりには他のcontainerと比べて時間差があるようでした。 私は今回初めて知ったんですが、MySQLの立ち上げが遅いのは結構あるあるみたいですね。

解決方法

MySQL Containerが立ち上がるまで1秒ごと立ち上がっているかチェックする関数を作成しました。Containerを起動後に以下の関数を呼ぶと起動状態を確認し、まだ起動していない場合はsleepに移るようになります🥳
一応Containerの起動timeoutを3分で設定しているのですが、大体5-6秒で起動されるかなと言った感じです。

def checkMysqlContainerRun() {
    timeout(time: 1, unit: 'MINUTES') {
        def containerRun = false
        while (!containerRun) {
            try {
                sh "docker exec mysql mysqladmin -uroot -pPASS ping -h mysql"
                containerRun = true
            } catch (Exception e) {
                sleep(1)
            }
        }
    }
}

おわりに

実はMySQL containerには運用開始後も色々と悩まされております...
運用開始後のつまづきと対応も今後書ければと思います。

参考になれば幸いです🍎

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?