Docker Compose で Accel Platform 環境を構築する。

公開日: 2018-07-05 / カテゴリ: CookBook

この CookBook では、Docker Compose を利用して Accel Platform 環境を構築する手順について紹介しています。 この CookBook では、以下の記事で作成した Docker イメージを利用します。

レシピ

  1. docker-compose.yml ファイルを作成する
  2. docker compose を実行する。
  3. war ファイルを作成する
  4. war ファイルをデプロイする

1. docker-compose.yml ファイルを作成する

以下のような docker-compose.yml ファイルを作成します。

docker-compose.yml

version: '3' services: db: image: mypostgresql:9.6 tty: true cassandra: image: mycassandra:1.1.12 solr: image: mysolr resin: image: myresin:4.0.56 ports: - "2222:22" - "8080:8080" - "8443:8443" depends_on: - "db" - "cassandra" - "solr"

上記 CookBook で作成した以下のイメージを利用しています。

  • DB
    • mypostgresql:9.6
  • Cassandra
    • mycassandra:1.1.12
  • Solr
    • mysolr
  • Resin
    • myresin:4.0.56

Resin の Docker コンテナのみ、ssh(2222 ポート)、HTTP(8080 ポート)、HTTPS(8443 ポート)をポートフォワードしています。 HTTPS は resin-admin から war ファイルをデプロイするために開放しています。

2. docker compose を実行する。

以下のコマンドで実行します。

docker-compose up

上記の docker-compose.yml ファイルがあるディレクトリから実行してください。 docker-compose.yml ファイル内の Services に指定した名称で DNS が利用可能です。 例えば、Resin の Docker コンテナ内からは「db」、「cassandra」、「solr」という名称で対応するコンテナのプライベート IP が解決できます。

3. war ファイルを作成する

IM-Juggling プロジェクト配下の各ファイルを以下のように変更します。 Cassandra, Solr, PostgreSQL への接続先をそれぞれ「cassandra」、「solr」、「db」に変更します。 Resin コンテナ内からは「db」、「cassandra」、「solr」という名称で対応するコンテナのプライベート IP が解決できるため、このように設定します。

conf/cassandra-config.xml

<cluster-name>Test Cluster</cluster-name>
<replication-factor>1</replication-factor>
<keyspace>default</keyspace>
<authentication enabled="false">
    <username>admin</username>
    <password>admin\_pwd</password>
</authentication>
<hosts>
    <host>cassandra:9160</host>
</hosts>
conf/solr-config.xml
<group name="default">
    <searcher>
        <method>POST</method>
        <distribution-policy>FIRST</distribution-policy>
        <servers>
            <url>http://solr:8983/solr/default</url>
        </servers>
    </searcher>
    <indexer>
        <distribution-policy>IDHASH</distribution-policy>
        <servers>
            <url>http://solr:8983/solr/default</url>
        </servers>
    </indexer>
    <extractor ref="im\_default" />
</group>
resin-web.xml
UTF-8
<log-handler name="" class="jp.co.intra\_mart.common.platform.log.handler.JDKLoggingOverIntramartLoggerHandler"/>
<logger name="debug.com.sun.portal" level="warning" />

    <!-- im\_service(im\_asynchronous) -->
    <resource jndi-name="jca/work" type="jp.co.intra\_mart.system.asynchronous.impl.executor.work.resin.ResinResourceAdapter" />
    <jsp>
            <recycle-tags>false</recycle-tags>
    </jsp>
    <database jndi-name="jdbc/default">
            <driver>
                    <type>org.postgresql.Driver</type>
                    <url>jdbc:postgresql://db:5432/iap\_db</url>
                    <user>imart</user>
                    <password>imart</password>
                    <init-param>
                            <param-name>preparedStatementCacheQueries</param-name>
                            <param-value>0</param-value>
                    </init-param>
            </driver>
            <max-connections>20</max-connections>
            <prepared-statement-cache-size>0</prepared-statement-cache-size>
    </database>
    <session-config>
        <reuse-session-id>false</reuse-session-id>
            <session-timeout>30</session-timeout>
    </session-config>

    <mime-mapping extension=".json" mime-type="application/json"/>

4. war ファイルをデプロイする

https://localhost:8443/resin-admin より、作成した war ファイルをデプロイし、テナントセットアップを行います。 localhost は docker-compose を実行しているマシンの IP アドレスに置き換えてください。 このように、Docker Compose を利用することで瞬時に Accel Platform 環境を構築することができます。 是非ご活用ください。