CirclCI 2.0 用にカスタムイメージを用意する場合は dockerize 入れといた方がよさそう

自社サービスや受託開発で利用する Docker イメージを見直しています。MySQL 用のイメージや Rails 用イメージを見直したところ, CircleCI 上でテストを実行する際に MySQL に接続できずテストが落ちる現象が発生しました。 テストが落ちた原因 MySQL の ENTRYPOINT の処理を見直した結果, MySQL が起動する前にデータベースへ接続しようとし, 結果接続できず落ちる状態でした。 変更前の ENTRYPOINT では最低限の処理だけ行い, その他の設定処理は起動後に外側から command を使って実行していました。見直しによって ENTRYPOINT 側で対応する処理を増やしたため初期化に時間がかかるようになってしまった模様。 対応 とりあえずの対応として, MySQL の初期化が完了するまでの時間として SLEEP 10 をとりあえず追加しました。(よくない) Dockerize 本来であれば Dockerize を用いるのが良さそうです。 [Configuring Databases - CircleCI](https://circleci.com/docs/2.0/databases/# using-dockerize-to-wait-for-dependencies) [Database Configuration Examples - CircleCI](https://circleci.com/docs/2.0/postgres-config/# example-ruby-project-with-mysql-and-dockerize) 複数のコンテナを組み合わせて利用する場合は dockerize をイメージに含めておくと良さそうです。CircleCI が提供しているイメージにはインストールされているらしい。 [Using Custom-Built Docker Images](https://circleci.com/docs/2.0/custom-images/# required-tools-for-primary-containers) のリストにはなかったので見逃していました。一緒に書いておいて欲しかった。 今回に限っては SLEEP 10 でお茶を濁して, 次回以降の見直し時に対応しようと思います。

2018/07/29 · Yuya MATSUSHIMA

CircleCI 2.0 を使って Middleman で作ったサイトを AWS S3 + CloudFront にデプロイ

自分の会社のサイトは創立以来 Middleman で管理運用しています。これまでは CircleCI 1.0 の機能を利用して AWS S3 にデプロイし CloudFront のキャッシュをクリアする構成になっていました。 CircleCI 1.0 が 2018 年 8 月末日で利用できなくなるため 2.0 に変更する必要がありました。 CircleCI 1.0 End of Life on August 31, 2018 CircleCI 2.0 対応にやったこと CircleCI 2.0 のドキュメントの確認 Middleman がビルドできる Docker イメージ作成 circle.yml を .circleci/config.yml に変更 CircleCI 2.0 を利用するには Docker イメージが必要です。CircleCI が用意しているイメージを利用する方法もあります。 Pre-Built CircleCI Docker Images - CircleCI 今回は Docker の学習も兼ねて自分で Docker イメージを用意することにしました。 Docker イメージの作り方 できたもの: Docker Hub: yuya-matsushima/middleman GitHub yuya-matsushima/docker-middleman 依存イメージ: yuya-matsushima/docker-ruby 今回は Ubuntu 16....

2018/05/04 · Yuya MATSUSHIMA