
Dockerのコンテナをコントロールするのによく使われるコマンドにdokerizeがあります。CircleCI 2.0上ではデフォルトでこのコマンドは使えます。ですが、Docker Composeをそのまま使うために「machine: true」とすると使えなくなってしまいます。今回はその場合にdockerizeコマンドを有効にする方法を紹介します。
見出し
はじめに
CircleCI 2.0上で「machine: true」にした時にdockerizeコマンドを有効にするには、シンプルにインストールするしかありません。ということで、CircleCI 2.0上でdockerizeをインストールして使用可能にしましょう。
dockerizeコマンドをCircleCI 2.0に適用する
前提として、すでにCircleCI 2.0でビルドするDocker化されたアプリケーションがあるものとして、進めます。
必要なファイルを作成する
それでは、必要なファイルを作成します。
$ touch .circleci/setup-dockerize.sh
$ tree .circleci/
.circleci/
├── config.yml
└── setup-dockerize.sh
dockerizeのインストールスクリプトを書く
Dockerizeをインストールするためのスクリプトとして、「setup-dockerize.sh」は以下のようにします。
#!/bin/bash
readonly DOCKERIZE_VERSION=v0.6.1
wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
バージョンなどはdockerizeのGithubを確認して下さい。
CircleCI 2.0の設定を追記する
次に、CircleCI 2.0の設定ファイル「config.yml」にdockerizeのインストールの設定を追記し、Docker化されたデータベースの起動を確認するコマンドを追加します。
version: 2
jobs:
build:
working_directory: ~/repo
machine: true
steps:
- checkout
...(略)...
- run:
name: Setup dockerize
command: bash .circleci/setup-dockerize.sh
- run:
...(略)...
- run:
name: Run Docker containers
command: yarn build && docker-compose up -d
...(略)...
- run:
name: Wait for db
command: dockerize -wait tcp://localhost:27017 -timeout 1m
...(ここでテスト実行)...
今回の設定ではDocker化されたデータベースが確実に起動した状態でテストが実行可能になります。
最後に
いかがでしたか?これでCircleCI 2.0でDocker Composeを使いたい場合でもdockerizeコマンドが使えるようになったことでしょう。それでは。


コメントを残す