Статьи

Docker Multi-Host Networking с Couchbase и WildFly

Многоузловая сеть Docker позволяет создавать виртуальные сети и присоединять к ним контейнеры, чтобы вы могли создать топологию сети, подходящую для вашего приложения. Этот блог покажет, как использовать его с Docker Compose.

Java-приложение CRUD с Couchbase, Java EE и WildFly  объяснило, как использовать приложение Java EE для предоставления интерфейса CRUD / REST для корзины данных в Couchbase. Требуется вручную скачать и запустить WildFly. Блог также использовал  сервер Couchbase с использованием Docker  и требовал ручной настройки для загрузки travel-sampleкорзины.

Настройка Couchbase Docker Container с использованием REST API  объясняет, как использовать Couchbase REST API  для настройки Couchbase Server.

Docker Multi-Host Networking

Этот блог удалит явную загрузку WildFly и ручную настройку сервера Couchbase:

  • Используйте Docker Compose для запуска WildFly и Couchbase (загрузка не требуется)
  • Используйте профиль Maven для настройки сервера Couchbase (ручная настройка не требуется)
  • Использует многоузловую сеть Docker, чтобы WildFly и сервер Couchbase могли общаться друг с другом

Давайте начнем!

Запустите Couchbase и WildFly, используя Docker Multi-Host Networking и Compose

  • Запустите сервер WildFly и Couchbase, используя docker-compose.ymlфайл с github.com/arun-gupta/docker-images/blob/master/wildfly-couchbase-javaee7/docker-compose.yml :
    mycouchbase:
      container_name: "db"
      image: couchbase/server
      ports:
        - 8091:8091
        - 8092:8092 
        - 8093:8093 
        - 11210:11210
    mywildfly:
      image: arungupta/wildfly-admin
      environment:
        - COUCHBASE_URI=db
      ports:
        - 8080:8080
        - 9990:9990

    arungupta/wildfly-adminИзображение используется, поскольку оно связывает управление WildFly со всеми сетевыми интерфейсами, а также предоставляет порт 9990. Это позволяет использовать плагин WildFly Maven для развертывания приложения. container_nameуказано для сервиса Couchbase и указано в сервисе WildFly с использованием COUCHBASE_URI. Затем он используется для подключения к Couchbase из приложения Java EE. Среда приложения запускается как:

    docker-compose --x-networking up -d
    Creating network "wildflycouchbasejavaee7" with driver "None"
    Creating wildflycouchbasejavaee7_mywildfly_1
    Creating db

    --x-networkingэто экспериментальный переключатель, добавленный в Docker Compose 1.9, который позволяет создать мост или оверлейную сеть. По умолчанию он создает мостовую сеть, которая работает на одном хосте. Созданная сеть может рассматриваться как:

    docker network ls
    NETWORK ID          NAME                      DRIVER
    968bde2b7745        bridge                    bridge              
    79e937bcf1f6        none                      null                
    d06a4bd59a4b        host                      host                
    5e26a9a205ff        wildflycouchbasejavaee7   bridge

    В выпуске 2221  содержится более подробное описание созданных сетей по умолчанию. wildflycouchbasejavaee7это новая мостовая сеть, созданная для нашего приложения.  В выпуске № 2345  приводятся некоторые сведения о неправильном имени драйвера в выходном сообщении.

  • Настройте сервер Couchbase

    1. Клон couchbase-javaeeрепо:
      https://github.com/arun-gupta/couchbase-javaee
    2. Настройте сервер Couchbase:
      mvn install -Pcouchbase
      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building couchbase-javaee 1.0-SNAPSHOT
      [INFO] ------------------------------------------------------------------------
      [INFO] 
      
      
      . . .
      
      * Server auth using Basic with user 'Administrator'
      > POST /sampleBuckets/install HTTP/1.1
      > Authorization: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==
      > User-Agent: curl/7.37.1
      > Host: 192.168.99.100:8091
      
      . . .
      
      < Cache-Control: no-cache
      < 
      { [data not shown]
      100    19  100     2  100    17     50    425 --:--:-- --:--:-- --:--:--   435
      * Connection #0 to host 192.168.99.100 left intact
      [][INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------

      exec-maven-pluginиспользуется для вызова REST API и настройки сервера Couchbase и настраивается в профиле Maven . Обязательно настройте docker.hostсвойство в pom.xml.

    3. Разверните приложение в WildFly:
      mvn install -Pwildfly -Dwildfly.hostname=192.168.99.100 -Dwildfly.username=admin -Dwildfly.password=Admin#007
      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building couchbase-javaee 1.0-SNAPSHOT
      [INFO] ------------------------------------------------------------------------
      
      . . .
      
      Nov 26, 2015 5:17:39 AM org.xnio.Xnio <clinit>
      INFO: XNIO version 3.3.1.Final
      Nov 26, 2015 5:17:39 AM org.xnio.nio.NioXnio <clinit>
      INFO: XNIO NIO Implementation Version 3.3.1.Final
      Nov 26, 2015 5:17:39 AM org.jboss.remoting3.EndpointImpl <clinit>
      INFO: JBoss Remoting version 4.0.9.Final
      [INFO] Authenticating against security realm: ManagementRealm
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------

      Убедитесь, что в CLI указан правильный хост. В данном случае это IP-адрес, полученный с помощью docker-machine ip default.

    Вызовите приложение

  • Вызовите конечную точку REST, используя cURL:
    curl -v http://192.168.99.100:8080/couchbase-javaee/resources/airline
    * Hostname was NOT found in DNS cache
    *   Trying 192.168.99.100...
    * Connected to 192.168.99.100 (192.168.99.100) port 8080 (#0)
    > GET /couchbase-javaee/resources/airline HTTP/1.1
    > User-Agent: curl/7.37.1
    > Host: 192.168.99.100:8080
    > Accept: */*
    > 
    < HTTP/1.1 200 OK
    < Connection: keep-alive
    < X-Powered-By: Undertow/1
    * Server WildFly/8 is not blacklisted
    < Server: WildFly/8
    < Content-Type: application/octet-stream
    < Content-Length: 1393
    < Date: Thu, 26 Nov 2015 13:18:36 GMT
    < 
    * Connection #0 to host 192.168.99.100 left intact
    [{"travel-sample":{"id":112,"iata":"5W","icao":"AEU","name":"Astraeus","callsign":"FLYSTAR","type":"airline","country":"United Kingdom"}}, {"travel-sample":{"id":109,"iata":"KO","icao":"AER","name":"Alaska Central Express","callsign":"ACE AIR","type":"airline","country":"United States"}}, {"travel-sample":{"id":1191,"iata":"UU","icao":"REU","name":"Air Austral","callsign":"REUNION","type":"airline","country":"France"}}, {"travel-sample":{"id":1203,"iata":"A5","icao":"RLA","name":"Airlinair","callsign":"AIRLINAIR","type":"airline","country":"France"}}, {"travel-sample":{"id":10642,"iata":null,"icao":"JRB","name":"Jc royal.britannica","callsign":null,"type":"airline","country":"United Kingdom"}}, {"travel-sample":{"id":13633,"iata":"WQ","icao":"PQW","name":"PanAm World Airways","callsign":null,"type":"airline","country":"United States"}}, {"travel-sample":{"id":137,"iata":"AF","icao":"AFR","name":"Air France","callsign":"AIRFRANS","type":"airline","country":"France"}}, {"travel-sample":{"id":10748,"iata":"ZQ","icao":"LOC","name":"Locair","callsign":"LOCAIR","type":"airline","country":"United States"}}, {"travel-sample":{"id":10,"iata":"Q5","icao":"MLA","name":"40-Mile Air","callsign":"MILE-AIR","type":"airline","country":"United States"}}, {"travel-sample":{"id":10226,"iata":"A1","icao":"A1F","name":"Atifly","callsign":"atifly","type":"airline","country":"United States"}}]

    Полный набор конечных точек REST документирован в приложении CRUD Java с Couchbase, Java EE и WildFly . Они перечислены здесь для удобства:

    1. ПОЛУЧИТЬ одну авиакомпанию:
      curl -v http://192.168.99.100:8080/couchbase-javaee/resources/airline/139
    2. Создайте новую авиакомпанию, используя POST:
      curl -v -H "Content-Type: application/json" -X POST -d '{"country":"France","iata":"A5","callsign":"AIRLINAIR","name":"Airlinair","icao":"RLA","type":"airline"}' http://192.168.99.100:8080/couchbase-javaee/resources/airline
    3. Обновите существующую авиакомпанию, используя PUT:
      curl -v -H "Content-Type: application/json" -X PUT -d '{"country":"France","iata":"A5","callsign":"AIRLINAIR","name":"Airlin Air","icao":"RLA","type":"airline","id": "19810"}' http://192.168.99.100:8080/couchbase-javaee/resources/airline/19810
    4. Удалить существующую авиакомпанию, используя DELETE:
      curl -v -X DELETE http://192.168.99.100:8080/couchbase-javaee/resources/airline/19810
  • Наслаждайтесь!

    Будьте общительны, делитесь!

  • чирикать
  • Похожие сообщения:

    1. Приложение CRUD Java с Couchbase, Java EE и WildFly
    2. Настройте Docker-контейнер Couchbase, используя REST API
    3. Начало работы с Couchbase с использованием Docker
    4. Таблицы Couchbase 4.0 — сервер, N1QL, многомерное масштабирование
    5. Docker Machine для настройки Docker Host — Технический совет № 78