Статьи

Изображения Push Spring Boot Docker на ECR

В предыдущем блоге мы интегрировали приложение весенней загрузки с EC2 . Это одна из самых простых форм развертывания, которые вы можете использовать в Amazon Web Services.

В этом уроке мы создадим образ докера с нашим приложением, который будет сохранен в реестре контейнера Amazon EC2 .

Вам необходимо установить инструмент aws cli .

С нашим приложением Spring мы сделаем все как можно проще, поэтому воспользуемся примером с официальной страницы источника Spring. Применяются только изменения к упаковке и названию приложения.

Наше приложение должно называться ecs-deploy

1
rootProject.name = 'ecs-deployment'

Затем мы создаем и запускаем наше приложение

1
2
gradle build
gradle bootRun

Теперь давайте докеризуем наше приложение.
Сначала мы создадим Dockerfile, который будет находиться в src / main / docker.

1
2
3
4
5
6
FROM frolvlad/alpine-oraclejdk8
VOLUME /tmp
ADD ecs-deployment-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

Затем мы должны отредактировать наш файл Gradle, чтобы добавить зависимость Docker, плагин Docker и дополнительную задачу Gradle для создания нашего образа Docker.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
buildscript {
    ...
    dependencies {
        ...
        classpath('se.transmode.gradle:gradle-docker:1.2')
    }
}
 
...
apply plugin: 'docker'
 
 
task buildDocker(type: Docker, dependsOn: build) {
    push = false
    applicationName = jar.baseName
    dockerfile = file('src/main/docker/Dockerfile')
}

И мы готовы построить наш образ докера.

1
./gradlew build buildDocker

Вы также можете запустить приложение Docker из только что созданного образа.

1
docker run -p 8080:8080 -t com.gkatzioura.deployment/ecs-deployment:1.0-SNAPSHOT

Первый шаг — тоже создайте наш репозиторий ecr.

1
aws ecr create-repository  --repository-name ecs-deployment

Тогда давайте продолжим нашу аутентификацию реестра Docker .

1
aws ecr get-login

Затем выполните команду, указанную в выводе. Попытка входа в систему будет успешной, и вы готовы приступить к отправке изображения.

Сначала пометьте изображение, чтобы указать репозиторий, который мы ранее создали, а затем выполните команду docker push.

1
2
docker tag {imageid} {aws account id}.dkr.ecr.{aws region}.amazonaws.com/ecs-deployment:1.0-SNAPSHOT
docker push {aws account id}.dkr.ecr.{aws region}.amazonaws.com/ecs-deployment:1.0-SNAPSHOT

И мы сделали! Наш образ докера для весенней загрузки развернут в реестре контейнера Amazon EC2.

Вы можете найти исходный код на github .