[Spring] Jib(์ง๋ธ)๋ฅผ ์ด์ฉํ Docker ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
์ ํฌ์คํธ์์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด์ฉํด Spring boot ์ ํ๋ฆฌ์ผ์ด์ ์ Docker ์ด๋ฏธ์ง๋ก ๋ง๋ค ์ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ Dockerfile์ ์ง์ ์์ฑํ๊ธฐ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ ์ด๋ ค์ด ๋ถ๋คํํ ๋ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ถ๋ด์ด์๋ค๋ ๊ฒ์ด ๋ค์ ์์ฌ์ ๋ ๋ถ๋ถ์ด์๋๋ฐ์.
Google Jib
์์ ๊ฐ์ด ๋ณดํต Docker ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด, ํ๋ก์ ํธ ๋ฐ์ผ๋ก Dockerfile์ ๋ถ์ด๊ณ ์งํํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ Jib์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ Dockerfile์ ์ง์ ๋ง๋ค์ง ์๊ณ ๋ ํ๋ก์ ํธ์์ Jib์ ์ด์ฉํด ๋ฐ๋ก ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ด Jib์ ๋ฉ๋ฆฌํธ์ ๋๋ค.
์ด์ฒ๋ผ Google์ Jib ํ๋ก์ ํธ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Docker ์ปจํ ์ด๋ ์์ฑ์ ์ต์ ํ ํ๊ธฐ ์ํด ์งํ๋ ํ๋ก์ ํธ์ ๋๋ค. Gradle, Maven์ ์ง์ํ๋ ๋ ๊ฐ์ง ํ๋ฌ๊ทธ์ธ์ด ์กด์ฌํ๋ฉฐ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ด์ฉํด์ Spring boot Application์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋์ปค ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด๋ผ ์ ์์ต๋๋ค.
https://github.com/GoogleContainerTools/jib
๋ฟ๋ง ์๋๋ผ OpenContainer ์ด๋ฏธ์ง๋ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐ ์์ด ๋ง์ ๊ณ ๋ฏผ์ด ์์ผ์ จ๋ ๋ถ๋ค์ด๋ผ๋ฉด, ๊ฝค ๋จ๋ฌผ๊ฐ์ ์์์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค์.
How to use
์ด์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ธฐ์กด์ Spring ์ ํ๋ฆฌ์ผ์ด์ ํน์ Spring boot ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ฌ์ค์๊ฑฐ๋, ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
์ฌ๊ธฐ์ ์ ๋ Gradle์ ์ฌ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ war์ jib ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด์ค๋๋ค. ์ฌ๊ธฐ์ war๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ jib ๋ด์ ๊ธฐ๋ณธ ์ปจํ ์ด๋ ๋ด์ Jetty ์น ์๋ฒ๊ฐ ๊ธฐ๋ณธ ๋ด์ฅ ๋์ด ์๊ธฐ ๋๋ฌธ์ Embedded Tomcat์ ํฌํจํ๊ณ ์๋ jar๊ฐ ์๋ war๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
IDE์์ bootWar๋ฅผ ์ด์ฉํด war ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค.
war ํ์ผ์ ํ๋ก์ ํธ/libs ํด๋์ ๋ง๋ค์ด์ง๋๋ค.
war ํ์ผ์ด ๋ง๋ค์ด์ก๋ค๋ฉด ์ด์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๋ฉด ๋ฉ๋๋ค. jib ๋ฐ ์ชฝ์ ์๋ jibDockerBuild ์ปค๋งจ๋๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ญ๋๋ค.
๋ช ๋ น์ด ์ ์คํ๋๊ณ ์๋ค๋ฉด ์์ ๊ฐ์ด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ๋น๋๊ฐ ์๋ฃ๋์๋ค๋ฉด ์์ ๊ฐ์ด docker image์ ์ถ๊ฐ๋ฉ๋๋ค. docker run ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ์คํํ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง ์์ฃผ ๊ฐ๋จํ๊ฒ Jib์ ์ด์ฉํ์ฌ Dockerfile ์์ด๋ Spring ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ปค ์ด๋ฏธ์ง๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค์ต๋๋ค.
๊ธฐ์กด์ Spring์์ ์ ๊ณตํ๋ ๊ฒ์ด๋ ํฌ๊ฒ ๋ค๋ฅผ ๊ฒ์ ์์ง๋ง Spring์์ ์ ๊ณตํ๋ ์ปค๋งจ๋๋ WAS๊ฐ Tomcat์ธ ๋ฐ๋ฉด, Jib์์ ๋ง๋๋ ์ด๋ฏธ์ง๋ Jetty๋ผ๋ ์ ์ด ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ด ์ธ์๋ ์ด ํฌ์คํธ์์๋ jibDockerBuild๋ฅผ ์ด์ฉํ์ฌ ๋ก์ปฌ์ ์๋ Docker Registry์์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์์ง๋ง jibBuildTar ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด tar ํ์ผ๋ก ๋ง๋ค์ด Docker CLI์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์๊ฒฉ Registry์ ๋ฐฐํฌํ๊ณ ์ ํ๋ค๋ฉด ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
์ด๋ฏธ์ง ์ถ์ฒ: https://cloud.google.com/java/getting-started/jib