Статьи

WildFly / JavaEE7 и MySQL связаны в двух контейнерах Docker (Технический совет № 65)

Технический совет № 61 показал, как запустить практическую работу с Java EE 7 в контейнере WildFly Docker . В этом случае было сделано несколько предположений:

  • WildFly объединяет базу данных H2 в памяти . Приложение Java EE 7 использует ресурс базы данных по умолчанию, который в случае WildFly преобразуется в соединение JDBC с этой базой данных в памяти. Это хороший способ начать создавать приложение, но довольно скоро вы захотите начать использовать реальную базу данных, такую ​​как MySQL.
  • Как правило, сервер приложений и база данных могут не находиться на одном хосте. Это снижает риск, избегая единой точки отказа. И поэтому WildFly и MySQL будут на отдельном хосте.

Существует множество доступных материалов, чтобы показать, как настроить WildFly и MySQL на отдельных хостах. Каковы шаблоны проектирования и анти-шаблоны, если вы должны были сделать это с помощью Docker?

Давайте взглянем!

В упрощенном порядке:

  1. Запустите контейнер MySQL как:
    1
    <span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -d mysql</span> запуск докера --name mysqldb -e MYSQL_USER = mysql -e MYSQL_PASSWORD = mysql -e MYSQL_DATABASE = пример -e MYSQL_ROOT_PASSWORD = суперсекрет -d mysql</span>
  2. Запустите контейнер WildFly с предварительно настроенным ресурсом JDBC MySQL:
    1
    <span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker run --name mywildfly --link mysqldb:db -p 8080:8080 -d arungupta/wildfly-mysql-javaee7</span> запуск докера --name mywildfly --link mysqldb: db -p 8080: 8080 -d arungupta / wildfly-mysql-javaee7</span>
  3. Найдите IP-адрес контейнера WildFly:
    1
    <span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' mywildfly</span> Докер sudo проверяет -f '{{.NetworkSettings.IPAddress}}' mywildfly</span>

    Если вы используете Mac, используйте IP-адрес boot2docker ip .

  4. Доступ к приложению как:
    1
    <span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">curl http://<IP_ADDRESS>:8080/employees/index.html</span> curl http: // <IP_ADDRESS>: 8080 / employee / index.html</span>

    чтобы увидеть результат как:

Приложение является тривиальным приложением Java EE 7, которое публикует конечную точку REST. Доступ к нему как:

1
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">curl http://localhost:8080/employees/resources/employees/</span> curl http: // localhost: 8080 / сотрудников / ресурсы / сотрудников /</span>

видеть:

1
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><?xml version="1.0" encoding="UTF-8" standalone="yes"?><collection><employee><id>1</id><name>Penny</name></employee><employee><id>2</id><name>Sheldon</name></employee><employee><id>3</id><name>Amy</name></employee><employee><id>4</id><name>Leonard</name></employee><employee><id>5</id><name>Bernadette</name></employee><employee><id>6</id><name>Raj</name></employee><employee><id>7</id><name>Howard</name></employee><employee><id>8</id><name>Priya</name></employee></collection></span> <? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?> <collection> <employee> <id> 1 </ id> <name> Penny </ name> </ employee> <employee > <идентификатор> 2 </ идентификатор> <имя> Шелдон </ имя> </ работник> <работник> <идентификатор> 3 </ идентификатор> <имя> Эми </ имя> </ работник> <работник> <идентификатор> 4 </ идентификатор> <имя> Леонард </ имя> </ работник> <работник> <идентификатор> 5 </ идентификатор> <имя> Бернадетт </ имя> </ работник> <работник> <идентификатор> 6 </ идентификатор > <имя> Raj </ имя> </ работник> <работник> <идентификатор> 7 </ идентификатор> <имя> Ховард </ имя> </ работник> <работник> <идентификатор> 8 </ идентификатор> <имя> Priya </ имя> </ работник> </ коллекция></span>

Если вы заинтересованы в мельчайших песках, читайте подробности.

Связывание контейнеров

Первая концепция, которую мы должны понять, это то, как Docker позволяет связывать контейнеры . Создание связи между двумя контейнерами создает канал между исходным контейнером и целевым контейнером и надежно передает информацию о исходном контейнере в целевой контейнер. В нашем случае целевой контейнер (WildFly) может видеть информацию об исходном контейнере (MySQL). Здесь важно понять, что ни одна из этой информации не должна быть общедоступна в контейнере-источнике, а доступна только для целевого контейнера.

Магический переключатель для включения ссылки, интуитивно --link , --link . Например, если контейнеры MySQL и WildFly выполняются, как показано выше, --link mysqldb:db связывает контейнер MySQL с именем mysqldb с псевдонимом db с целевым контейнером WildFly. Это определяет некоторые переменные среды, следуя определенному протоколу , в целевом контейнере, который затем можно использовать для доступа к информации об исходном контейнере. Например, IP-адрес, открытые порты, имя пользователя, пароли и т. Д. Полный список переменных среды можно увидеть как:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[arun@localhost wildfly-mysql-javaee7]$ sudo docker run --name mywildfly --link mysqldb:db -p 8080:8080 -it arungupta/wildfly-mysql-javaee7 env</span> [arun @ localhost wildfly-mysql-javaee7] $ docker run - name mywildfly --link mysqldb: db -p 8080: 8080 - это arungupta / wildfly-mysql-javaee7 env</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin</span> PATH = / USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">HOSTNAME=4e0458981a82</span> HOSTNAME = 4e0458981a82</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">TERM=xterm</span> TERM = Xterm</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT=tcp://172.17.0.24:3306</span> DB_PORT = ТСР: //172.17.0.24: 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP=tcp://172.17.0.24:3306</span> DB_PORT_3306_TCP = ТСР: //172.17.0.24: 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_ADDR=172.17.0.24</span> DB_PORT_3306_TCP_ADDR = 172.17.0.24</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_PORT=3306</span> DB_PORT_3306_TCP_PORT = 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_PROTO=tcp</span> DB_PORT_3306_TCP_PROTO = ТСР</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_NAME=/mywildfly3/db</span> DB_NAME = / mywildfly3 / дБ</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_USER=mysql</span> DB_ENV_MYSQL_USER = MySQL</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_PASSWORD=mysql</span> DB_ENV_MYSQL_PASSWORD = MySQL</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_DATABASE=sample</span> DB_ENV_MYSQL_DATABASE = образец</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_ROOT_PASSWORD=supersecret</span> DB_ENV_MYSQL_ROOT_PASSWORD = supersecret</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_MAJOR=5.6</span> DB_ENV_MYSQL_MAJOR = 5,6</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_VERSION=5.6.22</span> DB_ENV_MYSQL_VERSION = 5.6.22</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">JAVA_HOME=/usr/lib/jvm/java</span> JAVA_HOME = / USR / Библиотека / JVM / Java</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">WILDFLY_VERSION=8.2.0.Final</span> WILDFLY_VERSION = 8.2.0.Final</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">JBOSS_HOME=/opt/jboss/wildfly</span> JBOSS_HOME = / опт / JBoss / wildfly</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">HOME=/opt/jboss</span> HOME = / Opt / JBoss</span>

Таким образом, вы можете видеть, что есть DB_* окружения DB_* предоставляющие много информации о контейнере источника.

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

Переопределить стандартную команду Docker

Dockerfile для этого изображения наследуется от jboss / wildfly: latest и запускает контейнер WildFly. Контейнеры Docker могут выполнять только одну команду, но нам нужно установить драйвер JDBC, создать ресурс JDBC, используя правильный IP-адрес и порт, и развернуть файл WAR. Поэтому мы переопределим команду, унаследовав ее от jboss / wildfly: latest, и воспользуемся специальной командой. Эта команда сделает все, что мы хотим, а затем запустит WildFly.

Пользовательская команда выполняет следующие действия:

  • Добавить модуль MySQL
  • Добавить драйвер MySQL JDBC
  • Добавьте источник данных JDBC, используя IP-адрес и порт связанного контейнера MySQL.
  • Разверните файл WAR
  • Запустить контейнер WildFly

Обратите внимание, что WildFly начинается с -b 0.0.0.0 что позволяет ему быть привязанным к любому IP-адресу. Кроме того, команда должна выполняться на переднем плане, чтобы контейнер оставался активным.

Настройка безопасности

В идеале вы должны пробивать дыры в брандмауэре, чтобы обеспечить подключение к конкретному хосту / портам. Но эти инструкции были опробованы на Fedora 20, работающем в Virtual Box. Поэтому для удобства весь брандмауэр был отключен как:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[arun@localhost wildfly-mysql-javaee7]$ sudo docker run --name mywildfly --link mysqldb:db -p 8080:8080 -it arungupta/wildfly-mysql-javaee7 env</span> [arun @ localhost wildfly-mysql-javaee7] $ docker run - name mywildfly --link mysqldb: db -p 8080: 8080 - это arungupta / wildfly-mysql-javaee7 env</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin</span> PATH = / USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">HOSTNAME=4e0458981a82</span> HOSTNAME = 4e0458981a82</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">TERM=xterm</span> TERM = Xterm</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT=tcp://172.17.0.24:3306</span> DB_PORT = ТСР: //172.17.0.24: 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP=tcp://172.17.0.24:3306</span> DB_PORT_3306_TCP = ТСР: //172.17.0.24: 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_ADDR=172.17.0.24</span> DB_PORT_3306_TCP_ADDR = 172.17.0.24</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_PORT=3306</span> DB_PORT_3306_TCP_PORT = 3306</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_PORT_3306_TCP_PROTO=tcp</span> DB_PORT_3306_TCP_PROTO = ТСР</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_NAME=/mywildfly3/db</span> DB_NAME = / mywildfly3 / дБ</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_USER=mysql</span> DB_ENV_MYSQL_USER = MySQL</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_PASSWORD=mysql</span> DB_ENV_MYSQL_PASSWORD = MySQL</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_DATABASE=sample</span> DB_ENV_MYSQL_DATABASE = образец</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_ROOT_PASSWORD=supersecret</span> DB_ENV_MYSQL_ROOT_PASSWORD = supersecret</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_MAJOR=5.6</span> DB_ENV_MYSQL_MAJOR = 5,6</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">DB_ENV_MYSQL_VERSION=5.6.22</span> DB_ENV_MYSQL_VERSION = 5.6.22</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">JAVA_HOME=/usr/lib/jvm/java</span> JAVA_HOME = / USR / Библиотека / JVM / Java</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">WILDFLY_VERSION=8.2.0.Final</span> WILDFLY_VERSION = 8.2.0.Final</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">JBOSS_HOME=/opt/jboss/wildfly</span> JBOSS_HOME = / опт / JBoss / wildfly</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">HOME=/opt/jboss</span> HOME = / Opt / JBoss</span>

Кроме того, адаптер Host-only был добавлен с использованием настроек Virtual Box и выглядит следующим образом:

techtip65-хост-только-адаптер

Вот и все, что должно заставить вас использовать WildFly и MySQL в двух отдельных контейнерах.

Также проверил шаги на boot2docker, и там он также работал без проблем:

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
28
29
30
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker-images> docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -d mysql</span> docker-images> docker run --name mysqldb -e MYSQL_USER = mysql -e MYSQL_PASSWORD = mysql -e MYSQL_DATABASE = пример -e MYSQL_ROOT_PASSWORD = суперсекрет -d mysql</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker-images></span> Докер-изображения></span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker-images> docker run --name mywildfly --link mysqldb:db -p 8080:8080 -d arungupta/wildfly-mysql-javaee7</span> docker-images> docker run --name mywildfly --link mysqldb: db -p 8080: 8080 -d arungupta / wildfly-mysql-javaee7</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Unable to find image 'arungupta/wildfly-mysql-javaee7' locally</span> Невозможно найти изображение 'arungupta / wildfly-mysql-javaee7' локально</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Pulling repository arungupta/wildfly-mysql-javaee7</span> Потянув хранилище arungupta / wildfly-mysql-javaee7</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">791773b0e1de: Download complete</span> 791773b0e1de: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">511136ea3c5a: Download complete</span> 511136ea3c5a: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">782cf93a8f16: Download complete</span> 782cf93a8f16: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">7d3f07f8de5f: Download complete</span> 7d3f07f8de5f: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">1ef0a50fe8b1: Download complete</span> 1ef0a50fe8b1: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">20a1abe1d9bf: Download complete</span> 20a1abe1d9bf: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">cd5bb934bb67: Download complete</span> cd5bb934bb67: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">379edb00ab07: Download complete</span> 379edb00ab07: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">4d37cbbfc67d: Download complete</span> 4d37cbbfc67d: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">2ea8562cac7c: Download complete</span> 2ea8562cac7c: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">7759146eab1a: Download complete</span> 7759146eab1a: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">b17a20d6f5f8: Download complete</span> b17a20d6f5f8: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">e02bdb6c4ed5: Download complete</span> e02bdb6c4ed5: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">72d585299bb5: Download complete</span> 72d585299bb5: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">90832e1f0bb9: Download complete</span> 90832e1f0bb9: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">2c3484b42034: Download complete</span> 2c3484b42034: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">38fad13dea25: Download complete</span> 38fad13dea25: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">656878d9a6c6: Download complete</span> 656878d9a6c6: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">6510de96c354: Download complete</span> 6510de96c354: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">0cc86be8ac93: Download complete</span> 0cc86be8ac93: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">cc4e21e8b0e7: Download complete</span> cc4e21e8b0e7: загрузка завершена</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Status: Downloaded newer image for arungupta/wildfly-mysql-javaee7:latest</span> Статус: загружен новый образ для arungupta / wildfly-mysql-javaee7: последний</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">8522df362e57f5b7a5324dba692559b971c7cfda4a687212c44b1118008a4c63</span> 8522df362e57f5b7a5324dba692559b971c7cfda4a687212c44b1118008a4c63</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker-images> curl http://192.168.59.103:8080/employees/index.html</span> docker-images> curl http://192.168.59.103:8080/employees/index.html</span>
        
  • ПОЛУЧИТЕ всех сотрудников.
  • ПОЛУЧИТЬ 1 сотрудника.
1
2
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">docker-images> curl http://192.168.59.103:8080/employees/resources/employees/</span> docker-images> curl http://192.168.59.103:8080/employees/resources/employees/</span>
<span class="notranslate" onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">1Penny2Sheldon3Amy4Leonard5Bernadette6Raj7Howard8Priya</span> 1Penny2Sheldon3Amy4Leonard5Bernadette6Raj7Howard8Priya</span>

Исходный код изображения находится по адресу github.com/arun-gupta/docker-images/tree/master/wildfly-mysql-javaee7 .

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