Многоузловая сеть 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.
Этот блог удалит явную загрузку WildFly и ручную настройку сервера Couchbase:
- Используйте Docker Compose для запуска WildFly и Couchbase (загрузка не требуется)
- Используйте профиль Maven для настройки сервера Couchbase (ручная настройка не требуется)
- Использует многоузловую сеть Docker, чтобы WildFly и сервер Couchbase могли общаться друг с другом
Давайте начнем!
Запустите Couchbase и WildFly, используя Docker Multi-Host Networking и Compose
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
- Клон
couchbase-javaee
репо:https://github.com/arun-gupta/couchbase-javaee
- Настройте сервер 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
. - Разверните приложение в 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
.
Вызовите приложение
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 . Они перечислены здесь для удобства:
- ПОЛУЧИТЬ одну авиакомпанию:
curl -v http://192.168.99.100:8080/couchbase-javaee/resources/airline/139
- Создайте новую авиакомпанию, используя 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
- Обновите существующую авиакомпанию, используя 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
- Удалить существующую авиакомпанию, используя DELETE:
curl -v -X DELETE http://192.168.99.100:8080/couchbase-javaee/resources/airline/19810
Наслаждайтесь!
Будьте общительны, делитесь!
Похожие сообщения: