๋์ปค ์ด๋ฏธ์ง ๊ฒฝ๋ํ๊ฐ ์ค์ํ ์ธ ๊ฐ์ง ์ด์
์ปจํ ์ด๋ ๊ธฐ์ ์ ํต์ฌ์ '๊ฐ๋ณ๊ณ ๋น ๋ฅธ ์ด๋์ฑ'์ ์์ต๋๋ค. ํ์ง๋ง ์ค์ ์ด์ ํ๊ฒฝ์์๋ ์ ๊ธฐ๊ฐ๋ฐ์ดํธ(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: ๋ ์ด์ด๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ์ง๋ง, ๋ฐ๋๋ก ๋๋ฌด ์ ์ผ๋ฉด ์บ์ ํ์ฉ๋๊ฐ ๋จ์ด์ง ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ด์ฃผ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.