В моей предыдущей статье я писал о Docker, командах CLI, необходимых для запуска базы данных, и приложениях Spring Boot. Мы использовали Dockerfile, чтобы настроить среду и запустить приложение, запустив контейнеры отдельно, а затем создав связь между ними. Но для нескольких контейнерных приложений мы можем использовать инструмент docker-compose . Docker CLI может управлять одним контейнером, но docker-compose может управлять несколькими контейнерами и определять зависимые сервисы.
Важные условия
Если мы хотим запускать сервисы с помощью инструмента docker-compose, мы должны выполнить следующие шаги, которые также определены в документации Docker .
- Нам нужно определить среду приложения с помощью Dockerfile , чтобы ее можно было воспроизвести где угодно.
- Нам нужно определить сервисы, которые составляют приложение, в docker-compose.yml, чтобы они могли работать вместе в изолированной среде.
- Запустите команды docker-compose для запуска / остановки контейнера или развертывания / отмены развертывания приложения.
Нам нужен файл docker-compose.yml для написания сервисов. В Dockerfile мы определили среду приложения и в файле docker-compose записываем другие свойства сервисов, например, какой сервис будет работать на каком порту, какой сервис будет зависеть от других сервисов, какой порт будет перенаправлен на другой порт для общего доступа, определения сети, кластерных приложений и т. д.
Вам также может понравиться: Начало работы с Docker Compose
Монтаж
В моей предыдущей статье я описал шаги по установке Docker. Итак, мы можем проверить, что docker-compose установлен, запустив команду docker-compose -v
. В моем случае это возвращает: docker-compose version 1.24.1, build 4667896b
Скачать и запустить код
Теперь мы можем скачать код здесь . Или мы можем клонировать и оформить ветку Feature / Docker . Здесь мы видим, что Dockerfile похож на код, описанный в моей предыдущей статье .
Dockerfile
1
FROM java:8
2
COPY /build/libs/book-manager-1.0-SNAPSHOT.jar book-manager-1.0-SNAPSHOT.jar
3
ENTRYPOINT ["java","-jar","book-manager-1.0-SNAPSHOT.jar"]
И файл docker-compose.yml выглядит так:
YAML
xxxxxxxxxx
1
version'3'
2
services
3
docker-mysql
4
restart always
5
container_name docker-mysql
6
image mysql
7
environment
8
MYSQL_DATABASE book_manager
9
MYSQL_ROOT_PASSWORD root
10
MYSQL_ROOT_HOST'%'
11
volumes
12
./sql:/docker-entrypoint-initdb.d
13
ports
15
"6033:3306"
16
healthcheck
17
test"/usr/bin/mysql --user=root --password=root--execute \"SHOW DATABASES;\""
18
interval 2s
19
timeout 20s
20
retries10
21
book-manager-app
23
restart on-failure
24
build ./
25
expose
26
"10222"
27
ports
28
10222:10222
29
environment
30
WAIT_HOSTS mysql3306
31
depends_on
32
docker-mysql
Я определил две службы, названные docker-mysql и book-manager-app. Сервисная книга-менеджер-приложение зависит от docker-mysql. Мы используем docker-compose version 3. MySQL будет работать на порте 3306 в док-контейнере, но мы можем получить к нему открытый доступ с 6033. book-manager-app будет работать на порте 10222. У нас есть исходный файл DML и DDL на Каталог SQL, который будет работать во время запуска установки Docker и MySQL.
Запустить приложение с помощью docker-compose
Теперь мы применим несколько команд для запуска нашего приложения. Я думаю, что мы уже скачали проект по вышеуказанной ссылке . Мы пойдем в корневой каталог проекта. Для запуска приложения мы будем использовать следующие команды:
-
docker-compose up
- Это выполнит команды Dockerfile и запустит службы, определенные в файле docker-compose. -
docker-compose down
- Это остановит и удалит все контейнеры, которые выполнялись файлом docker-compose. -
docker-compose up --build
- Если мы обновляем Dockerfile, файл war / jar или файл docker-compose, то мы должны выполнить эту команду, чтобы получить обновленные данные на компьютере Docker.
Итак, я думаю, что после запуска docker-compose up
оно запускает приложение со всеми службами на компьютере Docker. Игнорируйте некоторые начальные журналы исключений для связи с базой данных. Чтобы проверить, работает он или нет, мы можем проверить http: // localhost: 10222 / book . Мы можем увидеть список книг здесь.
Удачного кодирования !!!
Дальнейшее чтение
Руководство разработчика по Docker (часть 2): Dockerfile
Ускорьте разработку с помощью Docker Compose