[Docker] ๐ Dockerfile
๐ Dockerfile์ด ์๋๋ฐ ๋น๋ ์๋ฒ๊ฐ ํ์ํ ๊น?
- ๊ฐ์ธ ๊ฐ๋ฐ์ด๋ ์์ ๊ท๋ชจ์ ๊ฒฝ์ฐ ์๊ด์๋ค.
- ํ์ง๋ง ํ์ ์ ํตํ์ฌ ์๋ก์ ๋ฒ์ ์ ๋ง์ถฐ์ค์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ค์ํ๋ค.
์ค์ ๋ก ๋๊ฐ์ ๊ฒฝ์ฐ์๋ CI/CD
์ ์ง์ํ๋ github
๋ฅผ ํตํ์ฌ, ์ด๋ค ํ๊ฒฝ์์ ๋ธ๋ก๊ทธ ํ์ผ์ ์ ์ํ๋ ์ง ๋๊ฐ์ ํ๊ฒฝ์ ๋ณด์ฅ๋ฐ๊ณ , ์ฝ๋๋ฅผ commit ํ push
ํ๋ฉด ์๋์ผ๋ก build ํ deployment
๊น์ง ๋๋ ๊น ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๊ณ ์๋ค.
๐ ์๋ฐ ์์ค ์ฝ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋น๋
์ค์ต์ ๋์ปค๊ต๊ณผ์์ 4์ฅ์ ์ฐธ๊ณ ํ์๋ค.
๐ ๋ฉ์ด๋ธ์ ์ฌ์ฉํ์ฌ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ Dockerfile ์คํฌ๋ฆฝํธ
์๋ ์ฝ๋๋ NASA์ ์ค๋์ ์ฒ๋ฌธ ์ฌ์ง ์๋น์ค์์ ์ค๋์ ์ฌ์ง์ ๋ฐ์์ค๋ ๊ฐ๋จํ REST API์ด๋ค.
FROM diamol/maven AS builder
WORKDIR /usr/src/iotd
COPY pom.xml .
RUN mvn -B dependency:go-offline
COPY . .
RUN mvn package
# app
FROM diamol/openjdk
WORKDIR /app
COPY --from=builder /usr/src/iotd/target/iotd-service-0.1.0.jar .
EXPOSE 80
ENTRYPOINT ["java", "-jar", "/app/iotd-service-0.1.0.jar"]
Dockerfile์ ์ผ๋ จ์ ์ธ์คํธ๋ญ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ์ด๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ก ๋์ปค ์ด๋ฏธ์ง๊ฐ ๋ง๋ค์ด์ง๋ค.
- FROM
- ๋ชจ๋ ์ด๋ฏธ์ง๋ ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์ถ๋ฐํ๋๋ฐ, ์ด ์ด๋ฏธ์ง๋ diamol/maven์ ์์์ ์ผ๋ก ์ง์ ํ๋ค.
- AS๋ฅผ ์ฌ์ฉํด ์ด๋ฆ์ ๋ถ์ผ ์๋ ์๋ค.
- WORKDIR
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง ํ์ผ ์์คํ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ํด๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ ๋๋ ํฐ๋ฆฌ๋ก ์ง์ ํ๋ ์ธ์คํธ๋ญ์ .
- ๋ฆฌ๋ ์ค์์๋ /usr/src/iotd
- ์๋์ฐ์์๋ C:\usr\src\iotd
- COPY
- ๋ก์ปฌ ํ์ผ ์์คํ ์ ํ์ผ ํน์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ๋ณต์ฌํ๋ ์ธ์คํธ๋ญ์
- โfrom ์ธ์๋ฅผ ์ฌ์ฉํด ํด๋น ํ์ผ์ด ํธ์คํธ ์ปดํจํฐ์ ํ์ผ ์์คํ ์ด ์๋๋ผ ์์ ๋น๋ ๋จ๊ณ์ ํ์ผ ์์คํ ์ ์๋ ํ์ผ์ ์๋ ค์ค ์ ์๋ค.
- COPY [์๋ณธ๊ฒฝ๋ก] [๋ณต์ฌ๊ฒฝ๋ก]
- ์ ์ฝ๋์์๋ ๋ก์ปฌ ํ์ผ ์์คํ
์ ์๋
pom.xml
ํ์ผ์ ์ด๋ฏธ์ง์ ์์ ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌํ์๋ค.
- RUN
- ๋น๋ ์ค์ ์ปจํ ์ด๋ ์์์ ๋ช ๋ น์ ์คํํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง ๋ ์ด์ด์ ์ ์ฅํ๋ ๊ธฐ๋ฅ
์ด builder ๋จ๊ณ๊ฐ ๋๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ฒ ๋๋ค.
๐ ์ด๋ฏธ์ง ๋น๋
์๋์ ๊ฐ์ด cd (ํ์ผ์์น)
์ดํ, docker image build -t image-of-the-day .
๋ฅผ ์คํํด ์ฃผ์๋ค.
docker image build -t [์ด๋ฏธ์ง์ ์ด๋ฆ] [์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ ๋๋ ํ ๋ฆฌ]
์ผ๋ก .
์ ๋นผ๋จน์ผ๋ฉด ์๋๋ค.
๊ฝค ๋ง์ ๋ก๊ทธ๊ฐ ์ฐํ๋ฉฐ ์ด๋ ์์กด ๋ชจ๋์ ๋ค์ด๋ฐ๊ณ , ์๋ฐ ๋น๋์ ์คํํ๋ผ๋ ๋ด์ฉ์ด๋ค.
์ด์ ์๋์ ๊ฐ์ด ์ปจํ
์ด๋๊ฐ ํต์ ์ ์ฌ์ฉ๋๋ ๋์ปค ๋คํธ์ํฌ๋ฅผ ์์ฑํด์ฃผ๊ณ , 80๋ฒ ํฌํธ๋ฅผ ํธ์คํธ ์ปดํจํฐ๋ฅผ ํตํด ๊ณต๊ฐํ๊ณ , nat ๋คํธ์ํฌ์ ์ปจํ
์ด๋๋ฅผ ์ ์ํด ์ฃผ์๋ค.
์ดํ, ์น ๋ธ๋ผ์ฐ์ ์์ http://localhost:800/์ ์ ์ํด์ฃผ๋ฉด NASA
์์ ์ ๊ณตํด์ฃผ๋ ์ค๋ ์ฌ์ง์ ๋ํ ์ ๋ณด๋ฅผ JSON
์ผ๋ก ๋ฐ์ ์ ์๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐