λ컀 μ΄λ―Έμ§ κ²½λνκ° μ€μν μΈ κ°μ§ μ΄μ
컨ν μ΄λ κΈ°μ μ ν΅μ¬μ 'κ°λ³κ³ λΉ λ₯Έ μ΄λμ±'μ μμ΅λλ€. νμ§λ§ μ€μ μ΄μ νκ²½μμλ μ κΈ°κ°λ°μ΄νΈ(GB)μ λ¬νλ λ¬΄κ±°μ΄ λ컀 μ΄λ―Έμ§λ₯Ό μ¬μ©νλ κ²½μ°λ₯Ό νν λ³΄κ² λ©λλ€. λ컀 μ΄λ―Έμ§ μ΅μ νλ λ¨μν μ©λμ μ€μ΄λ μμ μ΄ μλλλ€. 첫째, **λ°°ν¬ μλ**λ₯Ό κ²°μ ν©λλ€. μ΄λ―Έμ§κ° μμμλ‘ CI/CD κ³Όμ μμ λ μ§μ€νΈλ¦¬μ νΈμνκ³ μλ²λ‘ μ μ‘νλ μκ°μ΄ νκΈ°μ μΌλ‘ μ€μ΄λλλ€. λμ§Έ, **보μμ±**μ λλ€. μ΄λ―Έμ§κ° μλ€λ κ²μ κ·Έλ§νΌ ν¬ν¨λ ν¨ν€μ§κ° μ λ€λ λ»μ΄λ©°, μ΄λ 곡격μκ° λ Έλ¦΄ μ μλ μ·¨μ½μ (Surface Area)μ΄ μ€μ΄λλ ν¨κ³Όλ₯Ό μ€λλ€. μ μ§Έ, **λΉμ© μ κ°**μ λλ€. ν΄λΌμ°λ μ€ν 리μ§μ λ€νΈμν¬ μ μ‘ λΉμ©μ μλ μ μμ΅λλ€.
κ°μ₯ κ°λ ₯ν μ΅μ ν μ λ΅μ **λ©ν° μ€ν μ΄μ§ λΉλ(Multi-stage build)**μ λλ€. μ»΄νμΌλ¬λ ν μ€νΈ λꡬ λ± λΉλ λ¨κ³μμλ§ νμν λ¬΄κ±°μ΄ μμ‘΄μ±λ€μ μ΅μ’ μ΄λ―Έμ§μμ μμ ν λ°°μ νκ³ , μ€μ§ μ€νμ νμν λ°μ΄λ리 νμΌλ§ λ¨κΈ°λ λ°©μμ λλ€. λν `Ubuntu` λμ `Alpine Linux`μ κ°μ μ΄κ²½λ λ² μ΄μ€ μ΄λ―Έμ§λ₯Ό μ ννλ κ²λ§μΌλ‘λ μλ°± MBμ μ©λμ μ¦μ μ€μΌ μ μμ΅λλ€.
λ§μ§λ§μΌλ‘, λ컀μ λ μ΄μ΄ μΊμ± μ리λ₯Ό μ΄ν΄ν΄μΌ ν©λλ€. μμ£Ό λ³νλ μμ€ μ½λλ Dockerfileμ νλ¨μ λ°°μΉνκ³ , μ λ³νμ§ μλ λΌμ΄λΈλ¬λ¦¬ μ€μΉ λ‘μ§μ μλ¨μ λ°°μΉνμ¬ λΉλ μκ°μ λ¨μΆν΄μΌ ν©λλ€. λν μ¬λ¬ κ°μ `RUN` λͺ λ Ήμ `&&`λ‘ μ°κ²°νμ¬ νλμ λ μ΄μ΄λ‘ ν©μΉλ κ²λ μ’μ λ°©λ²μ λλ€. λ³Έ λꡬμμ μ 곡νλ 체ν¬λ¦¬μ€νΈλ₯Ό νλμ© μ±μκ°λ©°, μ¬λ¬λΆμ μ΄λ―Έμ§λ₯Ό κ°μ₯ μλ²½ν μνλ‘ μ΅μ νν΄ λ³΄μΈμ.
μμ£Ό 묻λ μ§λ¬Έ (FAQ)
A: Alpineμ glibc λμ musl libcλ₯Ό μ¬μ©νλ―λ‘, μΌλΆ C λΌμ΄λΈλ¬λ¦¬μ μμ‘΄νλ ν¨ν€μ§λ€μ΄ μ μ μλνμ§ μμ μ μμ΅λλ€. μ΄ κ²½μ° Pythonμ΄λ Node.jsμ© slim μ΄λ―Έμ§λ₯Ό λμμΌλ‘ κ³ λ €νμΈμ.
A: .git ν΄λλ λ‘컬μ node_modules, λ‘κ·Έ νμΌ λ±μ΄ μ΄λ―Έμ§ λΉλ 컨ν μ€νΈμ ν¬ν¨λλ©΄ μ μ‘ μλκ° λλ €μ§κ³ μ΄λ―Έμ§ μ©λμ΄ λΆνμνκ² μ»€μ§κΈ° λλ¬Έμ λλ€.
A: λ μ΄μ΄κ° λ무 λ§μΌλ©΄ μ€λ²ν€λκ° λ°μνμ§λ§, λ°λλ‘ λ무 μ μΌλ©΄ μΊμ νμ©λκ° λ¨μ΄μ§ μ μμ΅λλ€. λ Όλ¦¬μ μΈ λ¨μλ‘ λ¬Άμ΄μ£Όλ κ²μ΄ κ°μ₯ μ’μ΅λλ€.