在先前的博客中,我们将Spring Boot应用程序与EC2集成在一起。 它是您可以在Amazon Web Services上进行的最原始的部署形式之一。
在本教程中,我们将使用我们的应用程序创建一个docker映像,该映像将存储到Amazon EC2容器注册表中 。
您需要安装aws cli工具。
我们将通过Spring应用程序获得尽可能简单的信息,因此我们将使用来自spring官方源页面的示例 。 应用的唯一更改将在包装和应用名称上。
我们的应用程序应命名为ecs-deployment
rootProject.name = 'ecs-deployment'
然后我们构建并运行我们的应用程序
gradle build
gradle bootRun
现在让我们对应用程序进行docker化。
首先,我们将创建一个驻留在src / main / docker上的Dockerfile。
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镜像。
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')
}
我们已经准备好构建我们的docker映像。
./gradlew build buildDocker
您还可以从新创建的映像运行docker应用程序。
docker run -p 8080:8080 -t com.gkatzioura.deployment/ecs-deployment:1.0-SNAPSHOT
第一步也是创建我们的ecr存储库
aws ecr create-repository --repository-name ecs-deployment
然后让我们继续进行docker Registry身份验证 。
aws ecr get-login
然后运行输出中给出的命令。 登录尝试将成功,您已准备好推送图像。
首先标记图像以指定我们先前创建的存储库,然后执行docker push。
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
我们完成了! 我们的spring boot docker映像已部署在Amazon EC2容器注册表中。
您可以在github上找到源代码。
翻译自: https://www.javacodegeeks.com/2017/02/push-spring-boot-docker-images-ecr.html