2015年1月28日水曜日

dockerでCI環境を構築する chefdkのinstall

railsアプリCI環境の構築。スマフォアプリのサーバーサイド側のプログラムをCIに適応させます。

構成は

  • jenkins
  • docker
  • chef
  • rails
  • slack
  • bot

です。

やりたいことは
gitでコミットしたソースをjenkinsで取得 → dockerでコンテナを立ち上げ → railsのテストを実行
です。

slackやbotを使った通知は可能なら設定します。まずは、上記が最優先。
では、開始します。

vagrantでdockerを学習

まずはvagrant上で構築。CoreOS使います。


// vagrantのCoreOsを取得
git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant

vagrantを起動してログインする


// 起動
vagrant up

// ログイン
vagrant ssh

ログインしたらdockerのバージョンを確認する


docker version
Client version: 1.3.2
Client API version: 1.15
Go version (client): go1.3.2
Git commit (client): 50b8feb
OS/Arch (client): linux/amd64
Server version: 1.3.2
Server API version: 1.15
Go version (server): go1.3.2
Git commit (server): 50b8feb

dockerファイルを作成する


vi Dockerfile

FROM centos
MAINTAINER Edy 

ENV CHEFHOME /home/core/chef-repo
ADD chef-repo /home/core/chef-repo

RUN curl -L http://www.opscode.com/chef/install.sh | bash

RUN cd ${CHEFHOME}

# install chef dk
RUN rpm -ivh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.3.6-1.x86_64.rpm

# temporary setting path
RUN export PATH=/opt/chefdk/embedded/bin:$PATH

# knife install
RUN chef gem install knife-solo

内容の詳細は以下に記述

  • ENV:環境変数をセット
  • ADD:コンテナ外のファイルをコンテナ内に配置
  • RUN:ビルドステップ内で実行されるコマンド

dockerをビルド


// -i → コンテナーの標準入力を開く。
// -t → tty(端末デバイス)を確保する。/bin/bashなどでコンテナーを操作する際に指定
docker build -t test .

Dockerコンテナーの起動してchefがinstallされていることを確認


docker run -t -i test /bin/bash

chef -v
Chef Development Kit Version: 0.3.6

knife -v
Chef: 11.18.0

うまくできているのを確認できたので、commitする


docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
af4026699f4f        test:latest         "/bin/bash"         3 minutes ago       Exited (0) 2 minutes ago                       drunk_mcclintock

// コミット
docker commit compassionate_shockley newci

色々と作成した不要なDockerイメージを削除


docker images
// something

// 削除
docker rmi 8efe422e6104

使用中のコンテナは削除できないので、注意してください。
以上
PS : まだdockerに慣れていないので間違えている可能性があるので注意してください。

参考

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...