この CookBook では、Docker Compose を利用して Accel Platform 環境を構築する手順について紹介しています。
この CookBook では、以下の記事で作成した Docker イメージを利用します。
レシピ
- docker-compose.yml ファイルを作成する
- docker compose を実行する。
- war ファイルを作成する
- war ファイルをデプロイする
1. docker-compose.yml ファイルを作成する
以下のような docker-compose.yml ファイルを作成します。
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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 を実行する。
以下のコマンドで実行します。
1 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="UTF-8"?> <cassandra-config xmlns="http://www.intra-mart.jp/imbox/cassandra-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/imbox/cassandra-config ../schema/cassandra-config.xsd "> <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> </cassandra-config> |
conf/solr-config.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="UTF-8"?> <solr-config xmlns="http://intra-mart.co.jp/system/solr/config/solr-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://intra-mart.co.jp/system/solr/config/solr-config ../schema/solr-config.xsd "> <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> </solr-config> |
resin-web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<web-app xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin"> <character-encoding>UTF-8</character-encoding> <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"/> </web-app> |
4. war ファイルをデプロイする
https://localhost:8443/resin-admin より、作成した war ファイルをデプロイし、テナントセットアップを行います。
localhost は docker-compose を実行しているマシンの IP アドレスに置き換えてください。
このように、Docker Compose を利用することで瞬時に Accel Platform 環境を構築することができます。
是非ご活用ください。