Как смонтировать данные зажигания в хост-систему - PullRequest
0 голосов
/ 18 мая 2019

Я хотел бы запустить apache-ignite в докере, и я могу это сделать. Но проблема в том, что всякий раз, когда я вращаю изображение и создаю таблицы в ignite, оно остается там до тех пор, пока работает этот контейнер. Если я перезагружаю контейнер или снова запускаю образ зажигания, я не получаю эти данные. Я знаю, что когда мы раскручиваем изображения, он всегда создает новый контейнер. В моем случае, если я хочу сохранить данные, мне нужно зафиксировать и протолкнуть контейнер, чтобы при следующем запуске я его получил.

Но есть ли способ, где я могу хранить данные воспламенения в хост-системе, и всякий раз, когда я запускаю образ, он будет считывать / записывать данные в этом месте (при кратком монтировании).

Может кто-нибудь поделится там опытом или мыслью с примером? Спасибо.

Я использую это с docker-compose, ниже приведен мой файл docker-compose.yml.

version: "3.7"
services:
  ignite:
    image: apacheignite/ignite
    environment:
      - IGNITE_QUIET=false
    volumes:
      - "./ignite-main.xml:/opt/ignite/apache-ignite/config/default-config.xml"
    ports:
      - 11211:11211
      - 47100:47100
      - 47500:47500
      - 49112:49112

Если я запускаю команду docker-compose up, я получаю следующую ошибку.

Recreating ignite-test_ignite_1 ... done
Attaching to ignite-test_ignite_1
ignite_1  | Ignite Command Line Startup, ver. 2.7.0#20181130-sha1:256ae401
ignite_1  | 2018 Copyright(C) Apache Software Foundation
ignite_1  | 
ignite_1  | class org.apache.ignite.IgniteException: Failed to instantiate Spring XML application context [springUrl=file:/opt/ignite/apache-ignite/config/default-config.xml, err=Line 1 in XML document from URL [file:/opt/ignite/apache-ignite/config/default-config.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 31; cvc-elt.1: Cannot find the declaration of element 'property'.]

1 Ответ

2 голосов
/ 22 мая 2019

@ Update Здравствуйте, После выполнения большого количества RnD я смог решить эту проблему. Ниже приведена конфигурация, которую я сделал 1. docker-compose.yml

version: "3.5"
    services:
      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUIET=false

        volumes:
          - ignite-persistence-1:/opt/ignite/
          - "./ignite_1.xml:/opt/ignite/apache-ignite/config/default-config.xml"

        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112

        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
            delay: 30s
            max_attempts: 10
            window: 180s

    volumes:
      ignite-persistence-1:
  1. ignite_1.xml для сохранения данных

               http://www.apache.org/licenses/LICENSE-2.0

          Unless required by applicable law or agreed to in writing, software
          distributed under the License is distributed on an "AS IS" BASIS,
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          See the License for the specific language governing permissions and
          limitations under the License.
        -->
        <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd">
           <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
              <!-- Enabling Apache Ignite Persistent Store. -->
              <property name="dataStorageConfiguration">
                 <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
                    <property name="defaultDataRegionConfiguration">
                       <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                          <property name="persistenceEnabled" value="true" />
                       </bean>
                    </property>
                 </bean>
              </property>
              <property name="workDirectory" value="/opt/ignite/apache-ignite/data" />
              <!-- Explicitly configure TCP discovery SPI to provide a list of initial nodes. -->
              <property name="discoverySpi">
                 <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="ipFinder">
                       <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
                       <!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
                       <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
                          <property name="addresses">
                             <list>
                                <!-- In distributed environment, replace with actual host IP address. -->
                                <value>127.0.0.1:47500..47502</value>
                             </list>
                          </property>
                       </bean>
                    </property>
                 </bean>
              </property>
           </bean>
        </beans>

Я сохранил docker-compose.yml и ignite_1.xml в одном каталоге, открыл терминал из этого каталога и выполнил приведенную ниже команду.

docker-compose up

Используя ignite-persistence-1: / opt / ignite / Мне удалось сохранить данные, даже если я остановлю или завершу сборку docker.

Надеюсь, это поможет и другим.

Спасибо.

...