API ConnectがDocker対応したので、Mac上のDocker for MACで動かしてみる。Ubuntu上のDockerで動かす手順はDocker対応したAPI Connectを導入、稼動させるで説明されている。後半の手順は同じだが、Macで動かす際との違いを中心に補足する。
ちなみに、API ConnectのDocker版は現時点では開発用途でのみ利用可能で、本番用途では使えないため注意。
参考リンク
- API Connect 製品マニュアル
Installing and configuring IBM API Connect in a Docker container
- Docker for Macドキュメント
Get started with 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のサイトからDocker for MACをダウンロードする。左側のStableの方をダウンロード。
ダウンロードしたdocker.dmgを実行する。(数秒で完了)
Dockerアイコンをアプリケーションフォルダーにドラッグ&ドロップする。
パスワードを聞かれたらパスワードを入力する。
Dockerのインストールが完了して、上部のステータスバーにDockerアイコンが表示される。Dockerはすでに起動している模様。
ここで、Dockerに割り当てるメモリが2GBになっているので、8GBに変更する。ステータスバーのDockerアイコンを右クリックして、Preferencesを開き、メモリを2GBから8GBに変更して、Apply & Restart
をクリックする。
(2GBのままやっていると、DataPowerがメモリが足りずにすぐに停止してしまい、不安定となってしまう。API Connectのマニュアルにも8GB必要と書いてある。)
ステータスバーのアイコンをクリックして、About Dockerを選択すると、導入したDockerのバージョンが確認できる。
バージョンは1.12.6となっている。
コマンドで導入したバージョンを確認してみると、以下の通り。
$ 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したらうまくいった。)
$ docker pull hello-world
$ docker run hello-world
gitコマンドをインストール
API ConnectをDockerを動かすには、gitのリポジトリからクローンを作る手順になっているので、gitも入れておく。
ターミナルでgit
と入力して実行すると、gitが入っていない場合には、以下のようにツールをインストールするように促されるので、インストールをクリック。
同意するをクリック。
API Connectのインストール
マニュアルを参考にして、インストール。
説明等は簡略化しているので、こちらの記事も同時に見てください。
まずは、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ファイルを設定する。
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)にアクセスして、ログインする。
- ユーザー : admin
- パスワード : !n0r1t5@C
無事にログインできた!
この後は、こちらの記事を参考にしながら、通常通り設定をしていけばOK。
案外簡単に動いたし、必要リソースも少なくてサクサク動くのでかなり快適。