Arukas.ioのCLIとdockercloud/hello-worldのイメージを利用して、Webサービスを起動してみます。
前提条件
Arukas CLI
以下のバージョンで動作確認済
- v0.1.2
arukasコマンドにパスが通っていること。
which arukas
/opt/local/bin/arukas
バイナリ版CLIを https://github.com/arukasio/cli/releases/ からダウンロードできます。
認証情報
.envファイルに認証情報を保存してあること。
ARUKAS_JSON_API_TOKEN='<APIKey Token>'
ARUKAS_JSON_API_SECRET='<APIKey Secret>'
APIキーのページ( https://app.arukas.io/settings/api-keys )で作成・ 削除・確認できます。
手順の実行ディレクトリ (カレントディレクトリ)
この手順では、.envファイルが存在するディレクトリでarukasコマンドを実行する必要があります。(v0.1.2で確認)
.envを読み込めているかどうかは、例えば、vesionコマンドを実行することで確認できます。
arukas version
v0.1.2
2016/06/09 01:23:45 ARUKAS_JSON_API_TOKEN is not set
- 事前準備
===========
0.1. アプリケーション名の指定
アプリケーション名を指定します。
ARUKAS_APP_NAME='hello-world'
0.2. Dockerイメージの指定
利用するDocker Hub上のイメージを指定します。 ここでは、Docker公式のhello-worldイメージを利用します。
DOCKER_IMAGE_NAME='dockercloud/hello-world'
0.3. 使用ポートの指定
アプリケーションが利用するポート番号とプロトコル(TCP/UDP)を指定します
。
ARUKAS_APP_PORT='80'
ARUKAS_APP_PROTOCOL='tcp'
0.4. インスタンスのスペック指定
アプリケーションが利用するコンテナインスタンスの台数を指定します。
ARUKAS_INSTANCE_COUNT='2'
アプリケーションが利用するコンテナインスタンスのメモリ容量を指定します。
ARUKAS_INSTANCE_MEMSIZE='512'
- 構築
=======
1.1. アプリケーションの起動
必要な変数が全て存在することを確認します。
cat << ETX
ARUKAS_APP_NAME: ${ARUKAS_APP_NAME}
DOCKER_IMAGE_NAME: ${DOCKER_IMAGE_NAME}
ARUKAS_APP_PORT: ${ARUKAS_APP_PORT}
ARUKAS_APP_PROTOCOL: ${ARUKAS_APP_PROTOCOL}
ARUKAS_INSTANCE_COUNT: ${ARUKAS_INSTANCE_COUNT}
ARUKAS_INSTANCE_MEMSIZE: ${ARUKAS_INSTANCE_MEMSIZE}
ETX
Arukas.io上でアプリケーションを起動します。
arukas run \
--instances=${ARUKAS_INSTANCE_COUNT} \
--mem=${ARUKAS_INSTANCE_MEMSIZE} \
--app-name="${ARUKAS_APP_NAME}" \
--ports=${ARUKAS_APP_PORT}:${ARUKAS_APP_PROTOCOL} \
${DOCKER_IMAGE_NAME}
ID IMAGE CREATED STATUS NAME ENDPOINT
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx dockercloud/hello-world 2016-06-09T01:23:45.678+09:00 stopped stupefied-carson-xxxx stupefied-carson-xxxx.arukascloud.io
アプリケーションを搭載したコンテナが起動しはじめます。
1.2. 起動確認
arukas psコマンドに-aオプションを付けると全てのコンテナが一覧で表示さ
れます。 起動したコンテナを表示してみましょう。
arukas ps -a | grep ${ARUKAS_APP_NAME}
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx dockercloud/hello-world 2016-06-09T01:23:45.678+09:00 running stupefied-carson-xxxx stupefied-carson-xxxx.arukascloud.io
起動したコンテナの識別子であるコンテナIDを変数に格納します。
ARUKAS_CONTAINER_ID=$( arukas ps -q ) \
&& echo ${ARUKAS_CONTAINER_ID}
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
コンテナIDは、そのコンテナの停止、起動、削除に必要になります。
起動したコンテナのエンドポイントを確認しましょう。
ARUKAS_CONTAINER_ENDPOINT=$( \
arukas ps -a \
| grep ${ARUKAS_APP_NAME} \
| awk '{print $6}' \
) && echo ${ARUKAS_CONTAINER_ENDPOINT}
determined-boyd-6116.arukascloud.io
コンテナのエンドポイントは、起動したアプリケーションへの接続点となります。
起動したコンテナのステータスを確認しましょう。
ARUKAS_CONTAINER_STATUS=$( \
arukas ps -a \
| grep ${ARUKAS_APP_NAME} \
| awk '{print $4}' \
) && echo ${ARUKAS_CONTAINER_STATUS}
running
ステータスがrunningになっていれば、アプリケーションの搭載されたコンテナの起動は完了しています。
アプリケーションにアクセスしてみましょう。
curl https://${ARUKAS_CONTAINER_ENDPOINT}/
curl: (52) Empty reply from server
<html>
<head>
<title>Hello world!</title>
<link href='//fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<style>
body {
background-color: white;
text-align: center;
padding: 50px;
font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
}
#logo {
margin-bottom: 40px;
}
</style>
</head>
<body>
<img id="logo" src="logo.png" />
<h1>Hello world!</h1>
<h3>My hostname is 17da41f8f59b</h3> </body>
</html>
- 停止
=======
2.1. 停止対象コンテナの確認
コンテナを停止する前に、停止対象のコンテナが想定されているものか必ず確認してください。
arukas ps -a | grep ${ARUKAS_APP_NAME}
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx dockercloud/hello-world 2016-06-09T01:23:45.678+09:00 running stupefied-carson-xxxx stupefied-carson-xxxx.arukascloud.io
2.2. コンテナの停止
コンテナを停止します。
arukas stop ${ARUKAS_CONTAINER_ID}
Stopping...
2.3. ステータスの確認
停止したコンテナのステータスを確認します。
ARUKAS_CONTAINER_STATUS=$( \
arukas ps -a \
| grep ${ARUKAS_APP_NAME} \
| awk '{print $4}' \
) && echo ${ARUKAS_CONTAINER_STATUS}
stopped
ステータスがstoppedであれば、コンテナは無事停止しています。
- 起動
=======
停止したコンテナを再度起動してみましょう。
3.1. コンテナの起動
コンテナを起動する前に、起動対象のコンテナが想定されているものか必ず確認してください。
arukas ps -a | grep ${ARUKAS_APP_NAME}
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx dockercloud/hello-world 2016-06-09T01:23:45.678+09:00 stopped stupefied-carson-xxxx stupefied-carson-xxxx.arukascloud.io
3.2. コンテナの起動
コンテナを起動します。
arukas start ${ARUKAS_CONTAINER_ID}
Starting...
3.3. ステータスの確認
起動したコンテナのステータスを確認します。
ARUKAS_CONTAINER_STATUS=$( \
arukas ps -a \
| grep ${ARUKAS_APP_NAME} \
| awk '{print $4}' \
) && echo ${ARUKAS_CONTAINER_STATUS}
running
ステータスがrunningであれば、コンテナは無事停止しています。
注釈: 停止するとDNSの正引きが消えるみたいで、起動前にエンドポイントにアクセスするとネガティブキャッシュにはいって、しばらくアクセスできないかもです。
- 削除
=======
4.1. 削除対象コンテナの確認
コンテナを削除する前に、削除対象のコンテナが想定されているものか必ず確認してください。
arukas ps -a | grep ${ARUKAS_APP_NAME}
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx dockercloud/hello-world 2016-06-09T01:23:45.678+09:00 running stupefied-carson-xxxx stupefied-carson-xxxx.arukascloud.io
4.2. コンテナの削除
コンテナを削除します。
arukas rm ${ARUKAS_CONTAINER_ID}
(戻り値なし)
4.3. コンテナの存在確認
削除したコンテナが存在しないことを確認します。
arukas ps -a | grep ${ARUKAS_APP_NAME}
(戻り値なし)
完了
以上で、Arukas.ioのCLIとdockercloud/hello-worldのイメージを利用した、Webサービス起動のハンズオンは完了です。