728x90
반응형
gradle 을 이용하여 이미지를 생성하고 푸시한다.
라이브러리
// Docker
// https://mvnrepository.com/artifact/com.bmuschko.docker-remote-api/com.bmuschko.docker-remote-api.gradle.plugin
implementation 'com.bmuschko.docker-remote-api:com.bmuschko.docker-remote-api.gradle.plugin:9.4.0'
// https://mvnrepository.com/artifact/com.bmuschko.docker-java-application/com.bmuschko.docker-java-application.gradle.plugin
implementation 'com.bmuschko.docker-java-application:com.bmuschko.docker-java-application.gradle.plugin:9.4.0'
gradle 코드
- 도커는 동일한 패스에 있는 파일만 COPY 가 가능 하기때문에
- 생성된 jar 파일을 도커 파일이 있는 곳으로 옮겨 줘야 한다.
- 아래 보면 password가 노출이 되는데 해당부분은 삭제하거나 jenkins 를 통해서 외부에서 입력을 받도록 해야 한다.
- 아래 username, password 는 도커 허브의 아이디와 비번을 입력하면 된다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.2'
id 'io.spring.dependency-management' version '1.1.7'
id 'com.bmuschko.docker-remote-api' version '9.4.0'
id 'com.bmuschko.docker-java-application' version '9.4.0'
}
group = 'com.p8labs'
version = '0.0.1'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2024.0.0")
}
// 실행 가능한 JAR 생성 설정
bootJar {
enabled = true
doLast {
copy {
def jarFile = tasks.bootJar.archiveFile.get().asFile
def jarFilePath = jarFile.path
from jarFilePath
into getRootDir().path + "/build/docker/"
}
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-config-server'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// Docker
// https://mvnrepository.com/artifact/com.bmuschko.docker-remote-api/com.bmuschko.docker-remote-api.gradle.plugin
implementation 'com.bmuschko.docker-remote-api:com.bmuschko.docker-remote-api.gradle.plugin:9.4.0'
// https://mvnrepository.com/artifact/com.bmuschko.docker-java-application/com.bmuschko.docker-java-application.gradle.plugin
implementation 'com.bmuschko.docker-java-application:com.bmuschko.docker-java-application.gradle.plugin:9.4.0'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}
apply from: 'gradle/docker.gradle'
import com.bmuschko.gradle.docker.tasks.image.*
tasks.create('createDockerfile', Dockerfile) {
def jarFile = tasks.bootJar.archiveFile.get().asFile
from('openjdk:17-jdk-slim')
arg("JAR_FILE")
copyFile(jarFile.getName(), '/config-app.jar')
runCommand("mkdir -p target/dependency && (cd target/dependency; jar -xf /config-app.jar)")
entryPoint("java", "-jar", "/config-app.jar")
exposePort(8071)
}
task buildImage(type: DockerBuildImage) {
dependsOn createDockerfile
images.add('rnrl1215/p8labs-config:0.0.1')
}
task pushDocker(type: DockerPushImage) {
dependsOn buildImage // Docker 이미지 빌드 후 푸시
images.add("rnrl1215/p8labs-config:0.0.1")
registryCredentials {
username = ''
password = ''
}
}
도커 허브에 올라간 화면
728x90
반응형
'Development > Docker' 카테고리의 다른 글
[Docker] ClickHouse DB 연동 (0) | 2022.04.03 |
---|---|
[Docker] Docker 설치하기 (0) | 2021.07.22 |
[Docker] Docker 의 개념 (0) | 2021.07.21 |
댓글