-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
52 lines (39 loc) Β· 1.97 KB
/
Copy pathDockerfile
File metadata and controls
52 lines (39 loc) Β· 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# =================================================================
# 1λ¨κ³: λΉλ(Build) μ€ν
μ΄μ§
# - μμ€μ½λλ₯Ό μ»΄νμΌνκ³ μ€ν κ°λ₯ν .jar νμΌμ λ§λλ μν λ§ μνν©λλ€.
# - JDKκ° ν¬ν¨λ λ¬΄κ±°μ΄ μ΄λ―Έμ§λ₯Ό μ¬μ©ν©λλ€.
# =================================================================
FROM amazoncorretto:17-alpine-jdk AS builder
# μμ
λλ ν 리 μ€μ
WORKDIR /app
# Gradle κ΄λ ¨ νμΌλ€μ λ¨Όμ 볡μ¬νμ¬ μμ‘΄μ± λ μ΄μ΄ μΊμ± νμ©
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
# gradlew νμΌμ μ€ν κΆν λΆμ¬
RUN chmod +x ./gradlew
# Gradle μμ‘΄μ±μ λ€μ΄λ‘λν©λλ€. μμ€μ½λκ° λ³κ²½λμ΄λ μ΄ λ μ΄μ΄λ μΊμλ‘ μ¬μ¬μ©λ©λλ€.
RUN ./gradlew dependencies
# μμ€μ½λ μ 체λ₯Ό 볡μ¬ν©λλ€.
COPY src ./src
# Gradleμ μ¬μ©νμ¬ μ ν리μΌμ΄μ
μ λΉλν©λλ€. (ν
μ€νΈλ CI λ¨κ³μμ μ΄λ―Έ μννμΌλ―λ‘ μλ΅)
RUN ./gradlew build -x test
# =================================================================
# 2λ¨κ³: μ€ν(Runtime) μ€ν
μ΄μ§
# - λΉλλ .jar νμΌμ μ€ννλ μν λ§ μνν©λλ€.
# - JREλ§ ν¬ν¨λ λ§€μ° κ°λ²Όμ΄ μ΄λ―Έμ§λ₯Ό μ¬μ©νμ¬ μ΅μ’
μ΄λ―Έμ§ ν¬κΈ°λ₯Ό μ€μ
λλ€.
# =================================================================
FROM amazoncorretto:17-alpine
# μμ
λλ ν 리 μ€μ
WORKDIR /app
# 보μμ μν΄ non-root μ¬μ©μλ₯Ό μμ±νκ³ μ νν©λλ€.
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
# 1λ¨κ³(builder)μμ μμ±λ .jar νμΌμ 볡μ¬ν΄μ΅λλ€.
# build/libs/ μμ μ΄λ€ μ΄λ¦μ jarκ° μ겨λ app.jar λΌλ μ΄λ¦μΌλ‘ 볡μ¬λ©λλ€.
COPY --from=builder /app/build/libs/*.jar ./app.jar
# μ ν리μΌμ΄μ
μ΄ 8080 ν¬νΈλ₯Ό μ¬μ©ν¨μ λͺ
μ
EXPOSE 8080
# 컨ν
μ΄λκ° μμλ λ μ΄ λͺ
λ Ήμ΄λ₯Ό μ€ννμ¬ μ ν리μΌμ΄μ
μ ꡬλ
ENTRYPOINT ["java", "-jar", "app.jar"]