NECモバイルバックエンド基盤 Cloud Functions (Cloudfn) サーバ用の Dockerfile。
以下の2種類の Tag があります。
-
[version]-direct : Dockerレスモード(Directモード)
- 同一コンテナ内でサーバマネージャ、ロジックサーバ(Java, Node.js)をすべて動作させるモードです。
- サーバマネージャのシステム起動タイプは "direct" です。
- 本イメージは上記3サーバをすべて含みます。
-
[version]-docker : Dockerモード
- サーバマネージャ、ロジックサーバ(Java, Node.js)をすべて異なるコンテナで動作させるモードです。
- 本イメージにはサーバマネージャのみを含み、ホスト側の dockerd を使用してロジックサーバを起動します。いわゆる dind (Docker in Docker) 動作となります。
- Java Logic Server, Node.js Logic Server のイメージが別途必要です。
- サーバマネージャのシステム起動タイプは "docker" です。
「Dockerモード」を使用する場合、Docker ホスト側にユーザコードの格納ディレクトリ、ロジックサーバ バイナリ格納ディレクトリを作成し、 バイナリを格納しておきます。
$ sudo ./cloudfn_setup_docker_host.sh
動作検証用に RabbitMQ サーバをコンテナで起動する手順を示します。 ここでは、Docker Hub のオフィシャルコンテナを利用しています。
$ docker run -d --hostname baas-rabbitmq --name baas-rabbitmq-server \
-e RABBITMQ_DEFAULT_USER=rabbitmq -e RABBITMQ_DEFAULT_PASS=rabbitmq rabbitmq:3-alpine
RabbitMQ サーバの IP アドレスは以下コマンドで確認してください。
$ docker inspect --format="{{ .NetworkSettings.IPAddress }}" baas-rabbitmq-server
以下、cloudfn-server 起動時の AMQP_URI のホスト名には上記 IP アドレスを指定してください。
詳細は Makefile を確認してください。
AMQP_URI に RabbitMQ サーバの URI を指定して cloudfn-server を起動します。
$ docker pull necbaas/cloudfn-server:7.5-direct
$ docker run -d \
-e AMQP_URI=amqp://rabbitmq:[email protected]:5672 \
necbaas/cloudfn-server:7.5-direct
ロジックサーバのイメージを取得します。
$ docker pull necbaass/node-logic-server:8
$ docker pull necbaass/java-logic-server:11
cloudfn-server を起動します。
$ docker pull necbaas/cloudfn-server:7.5-docker
$ docker run -d \
-v /var/cloudfn/usercode:/var/cloudfn/usercode \
-v /var/run/docker.sock:/var/run/docker.sock \
-e AMQP_URI=amqp://rabbitmq:[email protected]:5672 \
necbaas/cloudfn-server:7.5-docker
- Docker ホストのユーザコード格納ディレクトリ(/var/cloudfn/usercode)の VOLUME を指定します。
- Docker UNIX 通信ソケット(/var/run/docker.sock)の VOLUME を指定します。サーバマネージャがこのソケットを利用し、Docker ホスト上の dockerd と通信します。
- 環境変数 AMQP_URI の指定は、前述と同様です。
Cloudfn サーバ 実行時には以下の環境変数が参照されます。
- JAVA_OPTS : Java VM オプション (default: なし)
- AMQP_URI : AMQP URI (default: amqp://rabbitmq:[email protected]:5672)
- SYSTEM_NO_CHARGE_KEY : APIカウント対象外キー (default: 詳細は略)
以下はシステム起動タイプが 'docker' の場合のみ設定可能です。
- USER_CODE_HOST_DIR: Docker ホストのユーザコードの格納先(default: /var/cloudfn/usercode)
- NODE_REPO_TAG: Nodejs タイプのロジックサーバのイメージタグ(default: necbaas/node-logic-server:8}
- JAVA_REPO_TAG: Java Logic Server のイメージタグ(default: necbaas/java-logic-server:11}
- NODE_HOST_DIR: Docker ホストのロジックサーバ バイナリ格納先(default: /opt/cloudfn/node-server/package)
- JAVA_HOST_DIR: Docker ホストのロジックサーバ バイナリ格納先(default: /opt/cloudfn/java-server)
ログを fluentd に出力する場合は、以下を指定します。
- LOG_FLUENT_HOST : Fluentd サーバアドレス (default: "")
- LOG_FLUENT_PORT : Fluentd ポート番号 (default: 24224)
- LOG_LEVEL: ログレベル (default: INFO)
本イメージのロジックサーバの実行環境は Node.js v8 / OpenJDK 11 となります。 また、spec 名はそれぞれ "node", "java" となります。