В Docker Orchestration с использованием Fig было показано, как определить и управлять мультиконтейнерной службой с помощью Fig. С тех пор Fig был переименован в Docker Compose или Compose для краткости.
Первый релиз Compose был анонсирован недавно:
Compose — это инструмент для определения и запуска сложных приложений с помощью Docker. С помощью Compose вы определяете мультиконтейнерное приложение в одном файле, а затем раскручиваете свое приложение одной командой, которая делает все, что нужно, чтобы запустить его.
Docker Compose использует тот же API, который используется другими командами и инструментами Docker.
Этот технический совет перепишет Docker Orchestration, используя блог Fig для использования Docker Compose. Другими словами, он покажет, как запустить приложение Java EE 7, которое развернуто с использованием MySQL и WildFly.
Давайте начнем!
Установить Docker Compose
Установите Compose as:
1
2
|
curl -L https: //github .com /docker/compose/releases/download/1 .1.0 /docker-compose- ` uname -s`-` uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose |
Файл конфигурации Docker Compose
Точкой входа в Compose является docker-compose.yml
. Для начала, инструмент docker-compose
также распознает fig.yml
файла fig.yml
но показывает следующее сообщение:
1
|
fig.yml is deprecated and will not be supported in future. Please rename your config file to docker-compose.yml |
И если в fig.yml
и fig.yml
и docker-compose.yml
отображается следующее сообщение:
1
2
|
Found multiple config files with supported names: docker-compose.yml, fig.yml Using docker-compose.yml |
Используйте тот же файл конфигурации из предыдущего блога и переименуйте в docker-compose.yml
:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
mysqldb: image: mysql:latest environment: MYSQL_DATABASE: sample MYSQL_USER: mysql MYSQL_PASSWORD: mysql MYSQL_ROOT_PASSWORD: supersecret mywildfly: image: arungupta /wildfly-mysql-javaee7 links: - mysqldb:db ports: - 8080:8080 |
Этот файл конфигурации на основе YML имеет:
- Два контейнера, определенные именами «mysqldb» и «mywildfly»
- Имена изображений определяются с помощью «изображения»
- Переменные среды для контейнера MySQL определены в «среде»
- Контейнер MySQL связан с контейнером WildFly с помощью «ссылок»
- Переадресация портов осуществляется с помощью «портов»
Запустить, проверить, остановить контейнеры Docker
- Все контейнеры могут быть запущены в отдельном режиме с помощью команды:
1
docker-compose up -d
И это показывает результат как:
12Creating wildflymysqljavaee7_mysqldb_1...
Creating wildflymysqljavaee7_mywildfly_1...
- Проверьте контейнеры как:
12345
docker-compose
ps
Name Command State Ports
-------------------------------------------------------------------------------------------
wildflymysqljavaee7_mysqldb_1
/entrypoint
.sh mysqld --da ... Up 3306
/tcp
wildflymysqljavaee7_mywildfly_1
/opt/jboss/wildfly/customi
... Up 0.0.0.0:8080->8080
/tcp
, 9990
/tcp
- Журналы для контейнеров можно увидеть как:
1
docker-compose logs
И показывает вывод как:
01020304050607080910111213141516171819202122232425mywildfly_1 | => Starting WildFly server
mywildfly_1 | => Waiting
for
the server to boot
mywildfly_1 | =========================================================================
mywildfly_1 |
mywildfly_1 | JBoss Bootstrap Environment
mywildfly_1 |
mywildfly_1 | JBOSS_HOME:
/opt/jboss/wildfly
mywildfly_1 |
mywildfly_1 | JAVA:
/usr/lib/jvm/java/bin/java
mywildfly_1 |
mywildfly_1 | JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=
true
-Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=
true
. . .
mywildfly_1 | 18:43:38,449 INFO [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (6,
'Raj'
)
mywildfly_1 | 18:43:38,452 INFO [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (7,
'Howard'
)
mywildfly_1 | 18:43:38,455 INFO [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (8,
'Priya'
)
mywildfly_1 | 18:43:39,714 INFO [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-9) Deploying javax.ws.rs.core.Application: class org.javaee7.samples.employees.MyApplication
mywildfly_1 | 18:43:39,751 INFO [org.wildfly.extension.undertow] (MSC service thread 1-9) JBAS017534: Registered web context:
/employees
mywildfly_1 | 18:43:39,805 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed
"employees.war"
(runtime-name :
"employees.war"
)
mywildfly_1 | 18:43:39,828 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http:
//127
.0.0.1:9990
/management
mywildfly_1 | 18:43:39,828 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http:
//127
.0.0.1:9990
mywildfly_1 | 18:43:39,829 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final
"Tweek"
started
in
8393ms - Started 280 of 334 services (92 services are lazy, passive or on-demand)
- Найдите IP-адрес хоста как:
1
boot2docker ip
И получить доступ к приложению как:
1curl http:
//192
.168.59.103:8080
/employees/resources/employees/
Чтобы увидеть результат как:
1<?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
>
Или в браузере как:
- Остановите контейнеры как:
1
docker-compose stop
чтобы увидеть результат как:
12Stopping wildflymysqljavaee7_mywildfly_1...
Stopping wildflymysqljavaee7_mysqldb_1...
Docker Compose Commands
Полный список команд Docker Compose можно увидеть, введя команду docker-compose
и отобразить вывод в виде:
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
|
velopment environments using Docker. Usage: docker-compose [options] [COMMAND] [ARGS...] docker-compose -h|--help Options: --verbose Show more output --version Print version and exit -f, -- file FILE Specify an alternate compose file (default: docker-compose.yml) -p, --project-name NAME Specify an alternate project name (default: directory name) Commands: build Build or rebuild services help Get help on a command kill Kill containers logs View output from containers port Print the public port for a port binding ps List containers pull Pulls service images rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services restart Restart services up Create and start containers |
Последующий блог, скорее всего, будет играть с командой scale
.
Справка для каждой команды отображается путем ввода -h
после имени команды. Например, справка для команды запуска отображается как:
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
|
docker-compose run -h Run a one-off command on a service. For example: $ docker-compose run web python manage.py shell By default, linked services will be started, unless they are already running. If you do not want to start linked services, use `docker-compose run --no-deps SERVICE COMMAND [ARGS...]`. Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...] Options: --allow-insecure-ssl Allow insecure connections to the docker registry -d Detached mode: Run container in the background, print new container name. --entrypoint CMD Override the entrypoint of the image. -e KEY=VAL Set an environment variable (can be used multiple times ) --no-deps Don't start linked services. -- rm Remove container after run. Ignored in detached mode. --service-ports Run command with the service's ports enabled and mapped to the host. -T Disable pseudo- tty allocation. By default `docker-compose run` allocates a TTY. |
Наслаждайтесь!
Ссылка: | Docker планирует организовать контейнеры от нашего партнера JCG Аруна Гупты в блоге Miles to go 2.0… . |