Продолжение руководства по интеграции Windows
и Docker
. Цель этого поста — показать быстрый и простой способ создания нового проекта JVM
и запустить его в качестве контейнера Docker
в Windows
.
В предыдущем посте я описал, как настроить среду Docker
на ПК под Windows
и запустить существующий контейнер Docker
. Теперь пришло время создать собственный проект JVM
, создать образ Docker
и запустить его.
Когда дело доходит до быстрого прототипирования чего-либо на платформе JVM
— Groovy
— отличный выбор языка. Кроме того, использование Groovy
в этом руководстве является прекрасным примером многоязычного характера микросервисов JVM
базе Docker
. Для инструмента сборки мой естественный выбор — Gradle
, который также будет использоваться в этом руководстве.
Настройте Gradle с помощью sdkman
Gradle
можно установить и добавить в PATH
вручную, но существует инструмент sdkman
, который значительно упрощает установку Gradle
и других утилит. Итак, я бы посоветовал потратить несколько минут, чтобы настроить его и использовать для установки Gradle
.
- Прежде всего следует установить
unzip
, так как это требуется для установщикаsdkman
. В новой консолиbash
выполните.1$ pacman -S unzip
- Затем установите
sdkman
.1$ export SDKMAN_DIR=
"$HOME/.sdkman"
&& curl -s get.sdkman.io | bash
- После установки могут возникнуть проблемы с запуском
sdkman
в средеmsys2
. Причина объяснена в соответствующем выпуске GitHub- Чтобы исправить это, откройте файл
~/.sdkman/bin/sdkman-init.sh
и найдите строку.1if
[[ -n
"${CANDIDATE_NAME}"
&& -h
"${CANDIDATE_DIR}"
]]; then
- Замените это на.
1
if
[[ -n
"${CANDIDATE_NAME}"
&& -d
"${CANDIDATE_DIR}"
]]; then
- Чтобы исправить это, откройте файл
- Теперь
sdkman
готов, откройте новую консольbash
и установите последнюю версиюGradle
.1$ sdk install gradle
- Убедитесь, что
Gradle
был установлен правильно (может потребоваться открытие новогоbash
).0102030405060708091011121314$ gradle --version
------------------------------------------------------------
Gradle
2.9
------------------------------------------------------------
Build time:
2015
-
11
-
17
07
:
02
:
17
UTC
Build number: none
Revision: b463d7980c40d44c4657dc80025275b84a29e31f
Groovy:
2.4
.
4
Ant: Apache Ant(TM) version
1.9
.
3
compiled on December
23
2013
JVM:
1.8
.0_45 (Oracle Corporation
25.45
-b02)
OS: Windows
8.1
6.3
amd64
Образец Groovy приложения
- Структура папок проекта может быть сгенерирована с помощью задачи
Gradle
.1$ gradle init --type groovy-library
- После генерации
Library.groovy
иLibraryTest.groovy
могут быть удалены. - Создать главное приложение class.ua.eshepelyuk.blog.Hello.groovy
123
package
ua.eshepelyuk.blog
println
"Hello from Docker by Groovy and Gradle"
(
1
)
(1) объявление
public static void main
может быть опущено вGroovy
Хотя
gradle init
генерирует скрипты- обертки Gradle , я не буду использовать их в этом руководстве. Для реальных проектов я бы предложил использовать обертку и не полагаться на локальную установкуGradle
.Включить поддержку Docker для скрипта сборки проекта
При использовании
Gradle
вам не нужно иметь дело сDockerfile
и другими вещами для создания образаDocker
. Для этого есть плагины :))Чтобы включить и настроить их, просто добавьте несколько строк в
build.gradle
как описано ниже.Включить плагины
build.gradle
12345plugins {
id
'groovy'
id
'application'
(
1
)
id
'com.bmuschko.docker-java-application'
version
'2.6.1'
(
2
)
}
(1) Плагин для создания работающего приложения, которое может быть встроено в образ
Docker
Настроить плагины
build.gradle
12345678mainClassName =
'ua.eshepelyuk.blog.Hello'
(
1
)
docker {
url = System.env.DOCKER_HOST.replaceAll(
"tcp"
,
"https"
) (
2
)
javaApplication {
tag =
"eshepelyuk/hellodockergradle:latest"
(
3
)
}
}
(1) Точка входа для плагина
application
(2) Исправление URL-адреса док-машины для Java API
(3) Имя тега изображения
Docker
Создайте образ и запустите контейнер Docker
Прежде чем перейти к дальнейшим действиям, необходимо запустить скрипт
start.sh
изDocker
для установки Windows. Пожалуйста, обратитесь к предыдущему сообщению для деталей.- Выполните команду для создания образа
Docker
.1$ gradle dockerBuildImage
- Проверьте, доступно ли новое изображение, запустив
docker image
. Вывод команды должен включать новое изображение с тегомeshepelyuk/hellodockergradle
(настройка изbuild.gradle
).12345$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
..
eshepelyuk/hellodockergradle latest daa12bd8bb4f About a minute ago
649
MB
..
- Запустите контейнер с помощью
docker run
и проверьте вывод на соответствие ожидаемому классуHello.groovy
.12$ docker run eshepelyuk/hellodockergradle
Hello from Docker by Groovy and Gradle
Полный код проекта доступен на My GitHub
Ссылка: Микросервисы JVM — приложение на основе JVM в качестве контейнера Docker от нашего партнера по JCG Евгения Шепелюка в блоге jk . - Выполните команду для создания образа