Search code examples
dockerignite

Configure Apache Ignite in Docker Swarm Mode


I try to create a cluser of Apache Ignite in Docker Swarm mode. For some reason the service does not seem to pick up my configuration file. Any ideas of what I do wrong?

my docker compose file is like:

version: "3.3"
services:
  ignite:
    image: apacheignite/ignite
    environment:
      - "CONFIG_URI=file:///data/ignite/ignite.xml"
    configs:
      - source: ignite-config
        target: /data/ignite/ignite.xml
    #ports:
    #  - 8080:8080
    deploy:
      replicas: 1
configs:
  ignite-config:
    file: ./ignite.xml

The ignite.xml looks like

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd">
    <bean abstract="true" id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">

        <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                        <property name="addresses">
                            <list>
                                <value>tasks.ignite</value>
                            </list>
                        </property>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
</beans>

The error I get from ignite (through docker service logs) is:

Failed to start grid: Failed to find configuration in: file:/data/ignite/ignite.xml

Solution

  • The main problem here is that you have abstract="true" in org.apache.ignite.configuration.IgniteConfiguration bean definition in ignite.xml config file