Я использую AWS codepipeline, он берет codecommit из источника, затем он использует codebuild, где он создает docker изображение, и затем codeDeploy для загрузки изображения в ECS, однако, когда он прибывает в ECS, банка повреждена, если я делаю это вручную и pu sh файл docker для ECS, он работает, поэтому это должно быть что-то в моей сборке.
Мой java файл использует 2 вещи для работы, сначала банку как зависимость, которая импортирует из S3 (s3 используется в качестве частного репо), а затем MicroService, который предоставляет настройки для файла, поэтому я помещу pom.
POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.axs.restrictivelists</groupId>
<artifactId>axs-restrictive-lists-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>axs-restrictive-lists-service</name>
<description>Consulta de listas restrictivas</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>dependencies</groupId>
<artifactId>dependencies</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>s3-snapshot</id>
<name>repo.axs.maven</name>
<url>s3://repo.axs.maven/snapshot</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>s3-release</id>
<name>REPO</name>
<url>s3:REPO</url>
</repository>
<snapshotRepository>
<id>s3-snapshot</id>
<name>REPO</name>
<url>s3:REPO</url>
</snapshotRepository>
</distributionManagement>
<build>
<extensions>
<extension>
<groupId>com.github.platform-team</groupId>
<artifactId>aws-maven</artifactId>
<version>6.0.0</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>ECR_REPO</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
DockerFile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY target/${JAR_FILE} /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
buildspe c
version: 0.2
phases:
install:
runtime-versions:
java: openjdk8
pre_build:
commands:
- echo Logging in to Amazon ECR...
- cp settings.xml ~/.m2/settings.xml
- aws --version
- $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- TAG="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"
- IMAGE_URI=${REPOSITORY_URI}:${TAG}
build:
commands:
- echo Build started on `date`
- echo $IMAGE_URI
- mvn clean install
- docker build --tag $IMAGE_URI .
post_build:
commands:
- printenv
- echo Build completed on `date`
- echo $(docker images)
- echo Pushing docker image
- docker push $IMAGE_URI
- echo push completed
- printf '[{"name":"%s","imageUri":"%s"}]' $CONTAINER_NAME $IMAGE_URI > imagedefinitions.json
artifacts:
files:
- imagedefinitions.json
У меня не возникает проблем ни с чем, но когда я создать банку, есть ли способ разместить команды в реальном времени в Codebuild? или способ проверить банку, прежде чем нажать на изображение?
Если вы можете помочь действительно спасибо.