https://github.com/GoogleContainerTools/jib/tree/master/examples/multi-module
Essayer.
com.palantir.docker
pour gradle, mais je ne savais pas comment le faire fonctionner avec plusieurs projets.com.palantir.docker
.
――Je voulais utiliser la flèche.rootProject--sample1 ← C'est le référentiel qui pousse vers ECR
--sample2
https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#quickstart Corrigez-le comme ça en regardant. Il est important de mettre apply false dans les plugins du rootProject. Si vous n'entrez pas ceci, une erreur se produira.
build.gradle(Extrait de rootProject)
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version "1.0.10.RELEASE"
id 'com.google.cloud.tools.jib' version '2.6.0' apply false
}
ext {
artifactGroup = 'prototype.app'
artifactVersion = '1.0.0'
springBootDependenciesVersion = '2.3.4.RELEASE'
}
/*Commun à tous les projets*/
allprojects {
ext {
set('extention', 'jar')
set('artifactVersion', "${artifactVersion}")
}
repositories {
mavenCentral()
jcenter()
gradlePluginPortal()
maven {
url "https://plugins.gradle.org/m2/"
}
}
}
/*Commun aux projets Java*/
configure(subprojects) {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
// Spring Boot
mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootDependenciesVersion}"
}
imports {
// AWS SDK ver 2.X.X
mavenBom "software.amazon.awssdk:bom:2.14.14"
}
}
dependencies {
// for Develop
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
}
}
/*Commun aux projets Docker*/
configure(subprojects - project('sample2') ) {
apply plugin: "com.google.cloud.tools.jib"
}
build.gradle(extrait sample1)
plugins {
id 'com.google.cloud.tools.jib'
}
jib {
from {
image = 'amazoncorretto:11'
}
to {
image = "XXXXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype"
// tags = ["${artifactVersion}"]
}
container {
environment = [SPRING_PROFILES_ACTIVE:"prod"]
}
}
Codebuild est également utilisé, alors créez buildspec.yml. Si vous ne créez pas de référentiel ECR, une erreur se produira, donc je l'ai créé avec terraform à l'avance. De plus, je ne le fais généralement pas, mais j'ai ajouté un docker pull and run dans la phase post_build pour voir si cela fonctionne.
buildspec.yml
version: 0.2
env:
variables:
# FIXME:
AWS_ACCOUNT : "XXXXXXXXXXXXX"
IMAGE_REPO : "prototype"
TAG : "latest"
phases:
install:
runtime-versions:
java: corretto11
commands:
- chmod +x ./gradlew
- touch gradle.properties
- |
cat <<EOL >> gradle.properties
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
EOL
- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay&
- timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
pre_build:
commands:
- echo build start on `date`
- $(aws ecr get-login --no-include-email)
build:
commands:
- ./gradlew build
- ./gradlew :sample1:jib --info
post_build:
commands:
#Pour le contrôle de fonctionnement
- docker pull ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
- docker run -p 8080:8080 ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
- echo build end on `date`
cache:
paths:
- /root/.gradle/caches/**/*
- /root/.gradle/wrapper/**/*
Au début, j'ai été frappé par les spécifications ECR, mais cela a fonctionné. (Le journal a été modifié comme ça)
Status: Downloaded newer image for XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype:latest
XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/prototype:latest
[Container] 2020/11/14 04:44:20 Running command docker run -p 8080:8080 ${AWS_ACCOUNT}.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGE_REPO}:${TAG}
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.4.RELEASE)
2020-11-14 04:44:24.281 INFO 1 --- [ main] p.b.transfer.BeforeTransferApplication : Starting BeforeTransferApplication on f2ceab1be0d6 with PID 1 (/app/classes started by root in /)
2020-11-14 04:44:24.283 INFO 1 --- [ main] p.b.transfer.BeforeTransferApplication : The following profiles are active: prod
2020-11-14 04:44:25.481 INFO 1 --- [ main] p.b.transfer.BeforeTransferApplication : Started BeforeTransferApplication in 1.636 seconds (JVM running for 2.084)
[Container] 2020/11/14 04:44:25 Running command echo build end on `date`
build end on Sat Nov 14 04:44:25 UTC 2020
Recommended Posts