LoginSignup
7
6

More than 5 years have passed since last update.

travis-ciを使って、kinesisの擬似版kinesaliteのDockerイメージを作って公開してみよう!

Last updated at Posted at 2016-03-02

目的

だんだんテンプレ化してきましたが本日も投稿です。

takezoeさんの記事、「AWS上で動作するアプリケーションをいかにローカルで開発するか?」に触発されて、
今度は、擬似的なkinesisのDocker Imageを作成できるか試してみることにしました!

成果物

参考資料

手順

1. GitHubでリポジトリを作成して、Dockerfileを用意する

FROM node

RUN npm install kinesalite

RUN mkdir -p /data

ADD kinesalite.js /

EXPOSE 4567

CMD ["node", "kinesalite"]

2. .travis.ymlを用意する

上記を参考にして、.travis.ymlを実装しました。

travis.yml
sudo: required

language: node_js
node_js:
  - "4.1"

services:
  - docker

before_install:
  - docker build -t triplew/kinesalite ./

script:
  - docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" 
  - docker push triplew/kinesalite

docker pushについては前回と同様の手順でpushしました。

3. git pushをして、travis ciを走らせる

今回もさくっと行けました^^

利用方法

実行環境

  • Client ローカルのMacOS
  • Server どこかのAWSとかどこかのGCPとか
  • curl利用

1. docker runでコンテナを起動

docker run -d -p 4567:4567 triplew/kinesalite

2. nodeスクリプトでstreamを作成

var AWS = require('aws-sdk')
AWS.config.loadFromPath('config.json');

var kinesis = new AWS.Kinesis({endpoint: 'http://localhost:4567'})

var params = {
    StreamName : "data",
    ShardCount : 2
}

kinesis.createStream(params, function(err, data) {
    if (err) {
        console.log(err, err.stack);
    } else {
        console.log(data);
    }
});

3. streamが作成できたかを確認

var AWS = require('aws-sdk')
AWS.config.loadFromPath('config.json');

var kinesis = new AWS.Kinesis({endpoint: 'http://localhost:4567'})

var params = {
    StreamName : "data"
}

kinesis.describeStream(params, function(err, data) {
    if (err) {
        console.log(err, err.stack);
    } else {
        console.log(data);
    }
});

結果出力

{ StreamDescription:
   { StreamName: 'data',
     StreamARN: 'arn:aws:kinesis:us-east-1:000000000000:stream/data',
     StreamStatus: 'ACTIVE',
     Shards: [ [Object], [Object] ],
     HasMoreShards: false,
     RetentionPeriodHours: 24 } }

4. nodeスクリプトでデータを登録

var AWS = require('aws-sdk')
AWS.config.loadFromPath('config.json');

var kinesis = new AWS.Kinesis({endpoint: 'http://localhost:4567'})

var params = {
    StreamName : "data",
    PartitionKey: "partkey_1",
    Data: "hoge"
    }

kinesis.putRecord(params, function(err, data) {
    if (err) {
        console.log(err, err.stack);
    } else {
        console.log(data);
    }
});

結果出力

{ ShardId: 'shardId-000000000000',
  SequenceNumber: '49559695658384854135094487428892798596209045909750677506' }

使えないこともなさそうな印象ですね!
Elixirとかscalaとかからもコールできるか試してみたいところですね^^


本日はここまでとなります。

7
6
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
7
6