В 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-composechmod +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.ymlUsing 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: supersecretmywildfly: 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-composepsName Command State Ports-------------------------------------------------------------------------------------------wildflymysqljavaee7_mysqldb_1/entrypoint.sh mysqld --da ... Up 3306/tcpwildflymysqljavaee7_mywildfly_1/opt/jboss/wildfly/customi... Up 0.0.0.0:8080->8080/tcp, 9990/tcp - Журналы для контейнеров можно увидеть как:
1
docker-compose logsИ показывает вывод как:
01020304050607080910111213141516171819202122232425mywildfly_1 | => Starting WildFly servermywildfly_1 | => Waitingforthe server to bootmywildfly_1 | =========================================================================mywildfly_1 |mywildfly_1 | JBoss Bootstrap Environmentmywildfly_1 |mywildfly_1 | JBOSS_HOME:/opt/jboss/wildflymywildfly_1 |mywildfly_1 | JAVA:/usr/lib/jvm/java/bin/javamywildfly_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.MyApplicationmywildfly_1 | 18:43:39,751 INFO [org.wildfly.extension.undertow] (MSC service thread 1-9) JBAS017534: Registered web context:/employeesmywildfly_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/managementmywildfly_1 | 18:43:39,828 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990mywildfly_1 | 18:43:39,829 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final"Tweek"startedin8393ms - 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|--helpOptions: --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 -hRun a one-off command on a service.For example: $ docker-compose run web python manage.py shellBy default, linked services will be started, unless they are alreadyrunning. 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… . |

