LoginSignup
68
54

More than 3 years have passed since last update.

CircleCIでdocker-composeは最強

Posted at

はじめに

みなさんはローカルの開発環境はdocker-composeで管理していますか?
私はもう新しく作っているプロジェクトは全て、docker-composeで作っています。

imageを指定して簡単に起動でき、サービス間の通信もdepends_onで指定するだけでOKなのはすごく助かります。

CircleCIではv2になってからDockerをサポートするようになり、簡単にサービスを立ち上げることができるようになりました。

そこで感じたのが、開発環境で使っている docker-compose.yml をそのままCircleCIでも使用できれば、わざわざCircleCI用の定義を書かなくてよくなるのでは?、ということです。

結果

できました。つまり、 開発環境=テスト環境(CircleCI上)を実現できました!
これで、開発環境とテスト環境でのサービス(MySQL etc)のバージョンが違ったとか、開発環境だとうまく動くのにテスト環境だとうまく動かないっていうのがなくなると思います!

公開しているリポジトリに実際のCircleCIのconfigがあるので、興味がある方は使用してみてください。

行ってるステップは以下の通りです。

  1. docker composeをインストールし指定の場所にファイルを移動させます
  2. いつも通りdocker composeを起動させます
  3. 一度stopさせているのは、原因はよくわからないんですが一回目の起動時は、うまくサービスが起動できないからです
  4. 二度目の起動を行います
  5. rspecを実行します
  6. docker composeをdownさせます
.circleci/config.yml
version: 2
jobs:
  build:
    machine:
      image: circleci/classic:edge
    working_directory: ~/repo
    steps:
      - checkout
      - run:
          name: Install Docker Compose
          command: |
            curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
            chmod +x ~/docker-compose
            sudo mv ~/docker-compose /usr/local/bin/docker-compose
      - run:
          name: docker-compose up
          command: |
            set -x
            docker-compose up --build -d
      - run:
          name: docker-compose stop
          command: |
            set -x
            docker-compose stop
      - run:
          name: docker-compose up
          command: |
            set -x
            docker-compose up -d
      - run:
          name: test
          command: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob 'spec/**/*_spec.rb' | circleci tests split --split-by=timings)"
            docker-compose exec rails_api bin/rspec --format progress \
                                                                  --format RspecJunitFormatter \
                                                                  --out /tmp/test-results/rspec.xml \
                                                                  $TEST_FILES
      - run:
          name: docker-compose down
          command: docker-compose down

まとめ

これでまた一つ管理することが減ったので、DXの改善になったのではないでしょうか!是非、お試しください。

68
54
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
68
54