Docker版API ConnectをMacで動かす


API ConnectがDocker対応したので、Mac上のDocker for MACで動かしてみる。Ubuntu上のDockerで動かす手順は[Docker対応したAPI Connectを導入、稼動させる](http://qiita.com/uedatks/items/230d3184b089062361cb)で説明されている。後半の手順は同じだが、Macで動かす際との違いを中心に補足する。
ちなみに、API ConnectのDocker版は現時点では開発用途でのみ利用可能で、本番用途では使えないため注意。

## 参考リンク

+ API Connect 製品マニュアル

[Installing and configuring IBM API Connect in a Docker container](https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.install.doc/tapic_docker_install.html)

+ Docker for Macドキュメント

[Get started with Docker for Mac](https://docs.docker.com/docker-for-mac/)

## 環境について
今回利用するPCは、MacBook Air (13-inch, Early 2015)。
スペックとOSバージョンは以下のとおり。

+ MACOS Sierra(バージョン10.12.2)
+ プロセッサ 1.6GHz Intel Core i5 (2core)
+ メモリ 8GB 1600 MHz DDR3

API ConnectのDocker版を動かすには、2core CPUと8GBメモリが必要とのことなので、このスペックのPCで試してみる。

## Docker for MACのインストール
[Docker for MACのサイト](https://docs.docker.com/docker-for-mac/)からDocker for MACをダウンロードする。左側のStableの方をダウンロード。
![Kobito.RFHOVv.png](https://qiita-image-store.s3.amazonaws.com/0/160591/c92b60b1-57aa-242a-9e8a-a7ff25176626.png "Kobito.RFHOVv.png")

ダウンロードしたdocker.dmgを実行する。（数秒で完了）
Dockerアイコンをアプリケーションフォルダーにドラッグ&ドロップする。
![Kobito.tbrHs1.png](https://qiita-image-store.s3.amazonaws.com/0/160591/0edc0664-d7c2-7ec8-9d46-a9d6fe66c503.png "Kobito.tbrHs1.png")

Dockerアプリケーションを起動する。
![Kobito.hJeuAy.png](https://qiita-image-store.s3.amazonaws.com/0/160591/4b2406c5-c877-bc9e-43a9-d0a745347e09.png "Kobito.hJeuAy.png")

Nextをクリック。
![スクリーンショット 2017-01-19 19.04.06.png](https://qiita-image-store.s3.amazonaws.com/0/160591/30a323fb-9f65-0b0e-1ddd-9d5450c3ff1c.png "スクリーンショット 2017-01-19 19.04.06.png")

OKをクリック。
![スクリーンショット 2017-01-19 19.06.08.png](https://qiita-image-store.s3.amazonaws.com/0/160591/cd71488f-670e-ab07-a8e9-13baa386ec33.png "スクリーンショット 2017-01-19 19.06.08.png")

パスワードを聞かれたらパスワードを入力する。
Dockerのインストールが完了して、上部のステータスバーにDockerアイコンが表示される。Dockerはすでに起動している模様。
![スクリーンショット 2017-01-19 19.09.57.png](https://qiita-image-store.s3.amazonaws.com/0/160591/feb042fd-a8e0-57a1-a073-f6e21008aeb9.png "スクリーンショット 2017-01-19 19.09.57.png")

ここで、Dockerに割り当てるメモリが2GBになっているので、8GBに変更する。ステータスバーのDockerアイコンを右クリックして、Preferencesを開き、メモリを2GBから8GBに変更して、`Apply & Restart`をクリックする。
(2GBのままやっていると、DataPowerがメモリが足りずにすぐに停止してしまい、不安定となってしまう。API Connectのマニュアルにも8GB必要と書いてある。）
![スクリーンショット 2017-01-23 16.24.36.png](https://qiita-image-store.s3.amazonaws.com/0/160591/58d5183b-262e-ee02-650f-5e84b0d6671e.png "スクリーンショット 2017-01-23 16.24.36.png")


ステータスバーのアイコンをクリックして、About Dockerを選択すると、導入したDockerのバージョンが確認できる。
バージョンは1.12.6となっている。

![スクリーンショット 2017-01-20 12.09.44.png](https://qiita-image-store.s3.amazonaws.com/0/160591/27009048-be5e-3341-3b86-32404b07b9f9.png "スクリーンショット 2017-01-20 12.09.44.png")

コマンドで導入したバージョンを確認してみると、以下の通り。

```console
$ docker --version
Docker version 1.12.6, build 78d1802
$ docker-compose --version
docker-compose version 1.9.0, build 2585387
$ docker-machine --version
docker-machine version 0.8.2, build e18a919
```


API Connectで前提としているDockerのバージョンは以下(2017年1月23日時点)なので、この環境で問題なさそうである。
+ docker 1.12.0 or later.
+ docker-compose 1.8.1 or later.

hello-worldをpullして実行してみる。
(いきなり`docker run hello-world`でも、ローカルリポジトリになかったらpullしてくれるはずだけど、なぜかうまくいかなかったので、一回pullしてからrunしたらうまくいった。）

```console
$ docker pull hello-world
$ docker run hello-world
```

## gitコマンドをインストール
API ConnectをDockerを動かすには、gitのリポジトリからクローンを作る手順になっているので、gitも入れておく。
ターミナルで`git`と入力して実行すると、gitが入っていない場合には、以下のようにツールをインストールするように促されるので、インストールをクリック。
![スクリーンショット 2017-01-20 15.34.54.png](https://qiita-image-store.s3.amazonaws.com/0/160591/6db382bf-5b9e-053d-c569-20618056cb6f.png "スクリーンショット 2017-01-20 15.34.54.png")
同意するをクリック。
![スクリーンショット 2017-01-20 15.36.57.png](https://qiita-image-store.s3.amazonaws.com/0/160591/1b843e17-b0ce-0d3f-aeaf-6782cd671a76.png "スクリーンショット 2017-01-20 15.36.57.png")

インストール中。
![スクリーンショット 2017-01-20 15.38.38.png](https://qiita-image-store.s3.amazonaws.com/0/160591/e71e286c-94f8-c805-9708-7e3d5f2c496f.png "スクリーンショット 2017-01-20 15.38.38.png")
2-3分くらいで終わる。
![スクリーンショット 2017-01-20 15.42.03.png](https://qiita-image-store.s3.amazonaws.com/0/160591/830dacf7-d932-9701-217e-497fae3aef90.png "スクリーンショット 2017-01-20 15.42.03.png")






	


## API Connectのインストール
[マニュアル](https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.install.doc/tapic_docker_install.html#task_g33_f4b_dy__install_in_docker)を参考にして、インストール。
説明等は簡略化しているので、[こちらの記事](http://qiita.com/uedatks/items/230d3184b089062361cb)も同時に見てください。

まずは、Docker Hostの任意の場所に、API ConnectのDockerリポジトリーのクローンを作成する。

```
$ git clone https://github.com/strongloop/apiconnect-docker
```

作成したクローンのルートフォルダで以下のコマンドを実行する。ダウンロードもするので結構時間がかかる。

```
$ docker run -it --rm --env SHOW_LICENSE=1 ibmcom/apiconnect:manager-v5.0.6.0
```

作成したクローンのルートフォルダーにある.envファイルを設定する。

```.env
ACCEPT_LICENSE=true
APIC_VERSION=v5.0.6.0
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SENDER=nxxxx@gmail.com
SMTP_USERNAME=xxxx@gmail.com
SMTP_PASSWORD=xxxx
```

以下のコマンドで起動。時間がかかる。

```
$ docker-compose up -d
```

起動時のログを見るには、以下のコマンドでログをtailできる。

```
docker-compose logs -f
```

起動には少し時間がかかる。

サービスの起動状況を確認する。
以下のような感じでUpになっていればOK。

```
$ docker-compose ps
    Name                   Command               State               Ports             
--------------------------------------------------------------------------------------
apim            /tini -- /startup.sh             Up                                    
datapower       /start.sh                        Up       443/tcp                      
esmaster        /docker-entrypoint.sh /bin ...   Up       9200/tcp, 9300/tcp           
ibmlogstash     /bin/sh -c /startup.sh           Up                                    
ibmportal       /root/tini -- /root/start_ ...   Up                                    
make-ssh-keys   /bin/sh -c /genkey.sh            Exit 0                                
microservice    /bin/sh -c /usr/bin/app.sh ...   Up       8080/tcp                     
nginx           /bin/sh -c /run.sh               Up       0.0.0.0:443->443/tcp, 80/tcp     
```

/etc/hostsにDocker HostのIPアドレスとAPI Connect関連の名前を追加する。

```
127.0.0.1 apim ibmportal datapower microservice
```

APIマネージャーやDataPowerなどのコンテナー上のコンポーネントはDocker Hostと同一IPアドレスとなる。このhostsに登録した名前でアクセスすることで、フロントでnginxが各コンポーネントへ振り分けしてくれている模様。

Cloud Manager([https://apim/cmc](https://apim/cmc))にアクセスして、ログインする。
+ ユーザー : admin
+ パスワード : !n0r1t5@C

![スクリーンショット 2017-01-23 14.53.37.png](https://qiita-image-store.s3.amazonaws.com/0/160591/384e0f48-524b-fcce-d0fc-24604e9034cd.png "スクリーンショット 2017-01-23 14.53.37.png")

無事にログインできた！

この後は、[こちらの記事](http://qiita.com/uedatks/items/230d3184b089062361cb)を参考にしながら、通常通り設定をしていけばOK。

案外簡単に動いたし、必要リソースも少なくてサクサク動くのでかなり快適。