Jib
์ Jib๋ ๋ฑ์ฅํ๊ฒ ๋์๋๊ฐ?
-
์ฐ๋ฆฌ๊ฐ ๊ทธ๋์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ฌด์จ ์ผ๋ค์ ํ์๊น?
- ๊ตฌ๊ธ์ Java Docker Image ์์ฑํ๋ ๋ฒ์ ์ฐพ์๋ณธ๋ค.
- ์ด์ฌํ DockerFile์ ์์ฑํ๋ค.
- ์ฐ๋ถํฌ๋ฅผ ๋ฐ๊ณ โ ์๋ฐ๋ฅผ ๋ค์ด๋ฐ๊ณ โ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ณ โ ์คํํ๋ค.
- ์กฐ๊ธ ๋ ๋น ๋ฅด๊ฒ ์์ฑํด๋ณผ๊น?
- ์ค์นํ์ง ์๊ณ
openjdk
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ๋น๋๋ jar๋ฅผ ๋ณต์ฌํ๊ฒ ์์ฑํ๋ค. - ๋ณต์กํ ๊ณผ์ ์ด ๋จ์ํ๊ฒ ๋ง๋ค์๋ค.
- ์ค์นํ์ง ์๊ณ
- ํ์ง๋ง
openjdk
์ด๋ฏธ์ง ์ฉ๋์ด ํฐ๊ฒ ๋ฌธ์ ๊ฐ ๋๋ค.- alpine์ด๋ผ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ฉํด๋ณด์. โ ์ฉ๋์ด ์ค์๋ค.
- DockerFile์ ์ต์ ํํ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ์ฝ๋๋ค. - ๋ฌธ์
.dockerignore
๋ฅผ ์ด์ฌํ ์์ฑํ๋ค.!target/something-*.jar
- ์กฐ๊ธ ๋ ๊ฐ์ ํ์ฌ ๋น๋๋ dependencies๋ค์ ๋ฐ๋ก ๋ถ๋ฆฌํด์ ์ ์ฅํ๋ค.
- ๋ถ๋ฆฌ๋ ์์กด์ฑ์ ํ๋์ Layer๋ก ๊ด๋ฆฌํ๋ค.
- ์ต๋ํ Cache๋ฅผ ํ์ฉํ์ฌ Dockerfile์ ์์ฑํ๋ค.
- Maven Plugin์ ํ์ฉํ๋ค.
- ๊ตฌ๊ธ์ Java Docker Image ์์ฑํ๋ ๋ฒ์ ์ฐพ์๋ณธ๋ค.
-
์ด ๋ชจ๋ ๊ณผ์ ์ด ๋ณต์กํ๊ณ .. ํ์ต๋์ด๋๋ ๋๊ณ .. ๋ ๊ทธ์ ๋จ์ํ Containerizingํ๊ณ ์ถ๋ค.
๊ทธ๋์ ์ด ๋ณต์กํ ๊ณผ์ ์ ๋จ์ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋ง๋ ๊ฒ Jib์ด๋ค.
Jib๋?
- Containerize your Java application.
- ํ๋ฌ๊ทธ์ธ ์ ์ฉํ๊ณ . jib๋ฅผ ์คํํ๋ฉด ๋๋ค.
- ๋ง์น Container์
compiler
์ ๊ฐ์ ์ญํ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
Goals
- Fast
- ์ดํ๋ฆฌ์ผ์ด์ ์ Multiple Layer๋ก ๋ถ๋ฆฌํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค.
- ๋ณ๊ฒฝ๋ ์ฌํญ๋ง ์ด๋ฏธ์ง ๋น๋์ ๋ฐ์๋๊ธฐ ๋๋ฌธ์ ์์ฃผ ๋น ๋ฅด๋ค.
- Reproducible
- ๋์ผํ ์ปจํ ์ธ ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ฉด ํญ์ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
- ๋ถํ์ํ ์ ๋ฐ์ดํธ๋ ๋ฐ์ํ์ง ์๋๋ค.
- Daemonless
- Docker Image๋ฅผ Maven, Gradle์ ๊ฐ์ ๋น๋ ํด์ ํตํด ๋ง๋ค ์ ์๋ค.
- ๋์ด์ Dockerfile์ด๋ Docker build/push์ ๊ฐ์ ์ก์ ์ด ํ์์๊ฒ ๋๋ค.
Jib Base Image๋?
- ์คํํ๊ฒฝ์ ํ์ํ ๋ถ๋ถ๋ง ๋ค๊ณ ์๋ค.
- ํ์ค Linux distribution์ ํฌํจ๋ shell๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์๋ค.
- https://github.com/GoogleContainerTools/distroless
Getting Started
plugins {
id 'com.google.cloud.tools.jib' version '2.6.0'
}
gradle jib - build image
gradle jibDockerBuild - Docker daemon๋ฅผ ํ์ฉํ ๋น๋
- ๋ค์ํ ์ต์ ๋ค์ด ์๋ค.
Multi Module Example
Jib๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฒช์๋ ๋ฌธ์ ๋ค
- jib์์ ๋ง๋๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ *๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ classpath ordering์ด ๋ฐ๋๊ฒ๋ ์ ์๋ ์ํฉ โ ์ต์ ๋ฒ์ ผ์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐ๋๋ค.(java version 11 up)