Dockerfile Layer
λ컀λ μ΄λ―Έμ§λ₯Ό λ§λ€ λ μ¬λ¬ κ°μ κ³μΈ΅(layer)μ κ°μ§ λ€μμ μ€λ μ·μΌλ‘ λλμ΄ μ μ₯νλ€.
μ΄λ μ¬λ¬ μ΄λ―Έμ§ νμΌλ€μ κ΄λ¦¬ν λ μ€λ³΅λλ μμμ νλμ λ μ΄μ΄λ₯Ό ν΅ν΄ κ΄λ¦¬νμ¬ κ³΅κ°/μκ°μ ν¨μ¨μ μ»λ μ₯μ μ΄ μλ€.
μ¦, λ컀λ Dockerfileμ μ½μ΄λ€μ¬, νμΌ μμ€ν μ λ³νλ₯Ό μ£Όλ 컀맨λλ§λ€ μλ‘μ΄ μ΄λ―Έμ§ λ μ΄μ΄λ₯Ό λ§λ λ€. μ΄κ²μΌλ‘ μ€λ³΅λλ λ μ΄μ΄λ₯Ό λ€μ λ€μ΄λ‘λ λ°μ νμκ° μμ΄μ Έ μ΄λ―Έμ§μ λ€μ΄λ‘λ μκ°μ μ μ½νλ€.

νΉμ μ΄λ―Έμ§μ λν inspect λ‘ layer νμΈνκΈ°
κ²°κ³Όλ μλμ κ°μΌλ©°, RootFSλ₯Ό νμΈνμ¬ ν΄λΉ μ΄λ―Έμ§κ° 9κ°μ λ μ΄μ΄λ‘ ꡬμ±λμ΄μμμ λ³Ό μ μλ€.
Layer λ₯Ό μμ±νλ syntax
μμ±νλ syntax
FROM
κΈ°λ³Έ μ΄λ―Έμ§λ₯Ό μ§μ νλ©°, Dockerfileμ 첫 λ²μ§Έ λͺ λ Ήμ΄μ΄λ€.
μ΄ λͺ λ Ήμ΄λ 첫 λ²μ§Έ λ μ΄μ΄λ₯Ό λ§λ λ€.
RUN
μ λͺ λ Ήμ΄λ₯Ό μ€ννμ¬ μ΄λ―Έμ§μ μλ‘μ΄ μννΈμ¨μ΄λ₯Ό μ€μΉνκ±°λ μ€μ μ λ³κ²½νλ€.
κ° RUN λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νλ€.
COPY
νΈμ€νΈ νμΌ μμ€ν μμ 컨ν μ΄λ νμΌ μμ€ν μΌλ‘ νμΌμ 볡μ¬νλ€.
κ° COPY λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νλ€.
ADD
COPYμ μ μ¬νμ§λ§, μΆκ°λ‘ URLμμ νμΌμ λ€μ΄λ‘λνκ±°λ μμΆλ νμΌμ μλμΌλ‘ μμΆ ν΄μ νλ€.
κ° ADD λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νλ€.
USER
μλ‘μ΄ μ¬μ©μλ₯Ό μ€μ νκ³ λ μ΄μ΄λ₯Ό μμ±νλ€.
ν΄λΉ μ¬μ©μμ UIDμ GIDκ° μλ‘μ΄ λ μ΄μ΄μ λ°μνλ€.
μμ±νμ§ μλ syntax
CMD
컨ν μ΄λκ° μμλ λ μ€νν κΈ°λ³Έ λͺ λ Ήμ μ§μ νλ€.
μ΄ λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νμ§ μλλ€.
ENTRYPOINT
컨ν μ΄λκ° μμλ λ μ€νν λͺ λ Ήμ μ§μ νλ€.
CMDμ ν¨κ» μ¬μ©λ μ μμΌλ©°, μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νμ§ μλλ€.
EXPOSE
컨ν μ΄λκ° λ ΈμΆν ν¬νΈλ₯Ό μ§μ νλ€.
μ΄ λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νμ§ μλλ€.
ENV
νκ²½ λ³μλ₯Ό μ€μ νλ€.
κ° ENV λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νλ€.
WORKDIR
μμ λλ ν 리λ₯Ό μ€μ νλ€.
μ΄ λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νμ§ μλλ€.
VOLUME
컨ν μ΄λμ νΈμ€νΈ κ°μ λ°μ΄ν° λ³Όλ₯¨μ μ€μ νλ€.
μ΄ λͺ λ Ήμ΄λ μλ‘μ΄ λ μ΄μ΄λ₯Ό μμ±νμ§ μλλ€.
π Cached layers μ Dockerfile λͺ
λ Ήμ΄ μμ
μ΄λ―Έμ§ λΉλλ₯Ό μ€ννλ©΄ μ΄μ λΉλμ λ μ΄μ΄λ₯Ό μ¬μ¬μ©νλ €κ³ μλνλ€.
μ΄λ―Έμ§μ λ μ΄μ΄κ° λ³κ²½λμ§ μμ κ²½μ°, λΉλλ λΉλ μΊμμμ λ μ΄μ΄λ₯Ό κ°μ Έμ¨λ€.
λ§μ§λ§ λΉλ μ΄ν λ μ΄μ΄κ° λ³κ²½λ κ²½μ° ν΄λΉ λ μ΄μ΄μ κ·Έ λ€μ μλ λͺ¨λ λ μ΄μ΄λ₯Ό λ€μ λΉλνλ€.

μμ μ΄λ―Έμ§μμ 보λ―μ΄ Dockerfileμ λͺ¨λ νλ‘μ νΈ νμΌμ 컨ν μ΄λμ 볡μ¬(COPY . .) ν λ€μ, λ€μ λ¨κ³μμ μ ν리μΌμ΄μ μ’ μμ±μ λ€μ΄λ‘λ(RUN go mod download) νλ€.
νλ‘μ νΈμ νμΌμ λ³κ²½νλ©΄, COPY λ μ΄μ΄μ λν μΊμκ° λ¬΄ν¨ν λλ€.
λν, κ·Έ λ€μ μ€λ λͺ¨λ λ μ΄μ΄μ λν μΊμλ 무ν¨νλλ€.
μ¬κΈ°μ λ컀νμΌ μ§μΉ¨μ μμ λλ¬Έμ λΉλλ ν¨ν€μ§κ° λ³κ²½λμ§ μμμμλ Go λͺ¨λμ λ€μ λ€μ΄λ‘λν΄μΌ νλ€. Dockerfile μ§μΉ¨ μμλ₯Ό λ³κ²½νμ¬ μ΄λ¬ν μ€λ³΅μ λ°©μ§ν μ μλ€. μμ€ μ½λκ° μ»¨ν μ΄λμ 볡μ¬λκΈ° μ μ μ’ μμ± λ€μ΄λ‘λ λ° μ€μΉκ° μ΄λ£¨μ΄μ§λλ‘ μμλ₯Ό λ³κ²½νλ€. μ΄λ κ² νλ©΄, μμ€ μ½λλ₯Ό λ³κ²½ν λμλ λΉλκ° μΊμμμ μ’ μμ± λ μ΄μ΄λ₯Ό μ¬μ¬μ©ν μ μλ€.
Goμ κ²½μ° go.mod μ go.sumμ΄λΌλ λ κ°μ νμΌμ μ¬μ©νλλ°, μ΄λ nodeμ package.json κ³Ό package-lock.json κ³Ό κ°λ€. μμλ₯Ό μλμ κ°μ΄ λ³κ²½νλ€.
COPY go.mod go.sum . λ₯Ό λ¨Όμ λ°°μΉνκ³ RUNμ ν΅ν΄ μ’ μμ±μ μ€μΉνλ€.
κ·Έ νμ COPY . . λͺ λ Ήμ΄λ‘ μμ€ μ½λλ₯Ό 볡μ¬νλ€.
μ΄μ μμ€ μ½λλ₯Ό νΈμ§νλ©΄ μ΄λ―Έμ§λ₯Ό λΉλν λ λΉλκ° λ§€λ² μ’ μμ±μ λ€μ΄λ‘λνμ§ μλλ€.

Last updated