Статьи

Docker Multi-Host Networking с Couchbase и WildFly

Сеть Docker Multi-Host позволяет создавать виртуальные сети и присоединять к ним контейнеры, чтобы вы могли создать топологию сети, подходящую для вашего приложения. Этот блог покажет, как использовать его с 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.

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

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

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

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

  1. Запустите сервер WildFly и Couchbase, используя файл docker-compose.yml с github.com/arun-gupta/docker-images/blob/master/wildfly-couchbase-javaee7/docker-compose.yml :
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    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 для развертывания приложения.

    COUCHBASE_URI указывается для службы Couchbase и упоминается в службе WildFly с помощью COUCHBASE_URI . Затем он используется для подключения к Couchbase из приложения Java EE.

    Среда приложения запускается как:

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

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

    1
    2
    3
    4
    5
    6
    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 РЕПО:
    1
    https://github.com/arun-gupta/couchbase-javaee
  2. Настройте сервер Couchbase:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    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 . Обязательно установите свойство pom.xml в pom.xml .

  3. Разверните приложение в WildFly:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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-адрес, полученный с использованием IP-адреса docker-machine ip default .

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

  1. Вызовите конечную точку REST, используя cURL:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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. ПОЛУЧИТЬ одну авиакомпанию:
      1
      curl -v http://192.168.99.100:8080/couchbase-javaee/resources/airline/139
    2. Создайте новую авиакомпанию, используя POST:
      1
      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:
      1
      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:
      1
      curl -v -X DELETE http://192.168.99.100:8080/couchbase-javaee/resources/airline/19810

Наслаждайтесь!

Ссылка: Docker Multi-Host Networking с Couchbase и WildFly от нашего партнера по JCG Аруна Гупта в блоге Miles to go 2.0… .