Docker
์๋ก
Konect ํ๋ก์ ํธ์ ์คํ ์ด์ง ๋ถ๋ฆฌ ์์ ์ ์งํํ๋ค. ์ด ๊ณผ์ ์์ ๋์ปค ์ปดํฌ์ฆ๋ฅผ ํตํด WAS์ DB๋ฅผ ๊ฐ์ด ๊ด๋ฆฌํ์๋ ์๊ฒฌ์ด ๋์๊ณ ํด๋น ์์ ์ ๊ฐ์ด ์งํํ๋ค. ์ด ๊ณผ์ ์์ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค.
๋ณธ๋ก
๋์ปค
๋์ปค๋ ์ด์์ฒด์ ์์ค ๊ฐ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฆฌ๋ ํจํค์ง๋ก ์ํํธ์จ์ด๋ฅผ ์ ๋ฌํ๋ ์ผ๋ จ์ ์๋น์คํ ์ ํ๊ตฐ์ด๋ค - ์ํค๋ฐฑ๊ณผ -
์๋ฐ ๊ธฐ๋ฐ ์คํ๋ง ๋ถํธ๋ก ๊ตฌํ๋ WAS๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. WAS๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ๋์ผํ ๋ฒ์ ์ ์๋ฐ๊ฐ ๋ก์ปฌ์ ์ค์น๋ฅผ ํด์ผํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด ํ์ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์น๋ฅผ ํด์ผํ๋ค. ์ด๋ฐ ๋ฒ๊ฑฐ๋ก์์ ๋์ด๋ด๊ณ , ๊ตฌํํ๊ฒฝ๊ณผ ๋์ผํ ์คํํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์คํ์ ํ์ํ ๋ชจ๋ ํ๊ฒฝ์ ํ๋๋ก ๋ฌถ์ด์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ๊ฐ ๋์ปค์ด๋ค.
์ ๊ทธ๋ผ ๊ตฌํํ๊ฒฝ๊ณผ ๋์ผํ ์คํํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํ ๊น? A ๊ฐ๋ฐ์์ B ๊ฐ๋ฐ์๊ฐ ์๋ค๊ณ ๊ฐ์ ์ ํ์. A ๊ฐ๋ฐ์ ๋ก์ปฌ ํ๊ฒฝ์์ ์ ์์ ์ผ๋ก ์คํ์ด๋๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐฐํฌ๊ฐ ๋๋ค. ๊ทผ๋ฐ, B ๊ฐ๋ฐ์ ํ๊ฒฝ์์ ์คํ์ด ์๋๊ฑฐ๋ ์ด์ ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๊ฐ๋๋ฐ ์ ์์ ์ผ๋ก ์คํ์ด ์๋๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. ์ฆ, โ๋ด ์ปดํจํฐ์์๋ ๋๋๋ฐ์โ๋ฅผ ๋ง๊ธฐ ์ํด ๊ตฌํํ๊ฒฝ๊ณผ ๋์ผํ ์คํํ๊ฒฝ์ ์ ๊ณตํด์ผ ํ๋ค.
์ด์ธ์๋ ๋์ปค๋ฅผ ์ฌ์ฉํ์ ๋์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ฐ ์ปจํ ์ด๋๋ ๋ ๋ฆฝ๋ ํ๊ฒฝ์์ ์คํ๋๊ธฐ ๋๋ฌธ์, ํ๋์ ์๋ฒ์์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ์ํฅ ์์ด ์ด์ํ ์ ์๋ค.
- ํธ๋ํฝ์ด ๋ชฐ๋ฆด ๋ ์ปจํ ์ด๋๋ฅผ ๋น ๋ฅด๊ฒ ์ฌ๋ฌ ๊ฐ ๋ณต์ ํด์ ๋์ธ ์ ์๋ค.
- VM์ ๋นํด ํจ์ฌ ๊ฐ๋ณ๊ณ ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค.
- Docker Hub์ ๊ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ ค๋๋ฉด, ์ด๋ค ์๋ฒ์์๋ ํด๋น ์ด๋ฏธ์ง๋ฅผ ํตํด ๋์ผํ ํ๊ฒฝ์ ์ ๊ณต๋ฐ์ ์ ์๋ค. VM์ ๋น๊ตํ๋ ๋ด์ฉ์ ๋ค์ ํฌ์คํ ์์ ๋ ์์ธํ ๋ค๋ฃจ๊ฒ ๋ค.
๋จ์ ๋ ์กด์ฌํ๋ค.
- ์ปจํ ์ด๋, ์ด๋ฏธ์ง, ๋ณผ๋ฅจ, ๋คํธ์ํฌ ๋ฑ ๋ฌ๋ ์ปค๋ธ๊ฐ ์กด์ฌํ๋ค.
- ํธ์คํธ OS์ ์ปค๋์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, VM์ ๋นํด ๊ฒฉ๋ฆฌ ์์ค์ด ๋ฎ์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ํธ์คํธ ์์คํ ์ ์ฒด๊ฐ ์ํํด์ง ์ ์๋ค.
- ์ปจํ ์ด๋๋ Statelessํ๊ฒ ์ค๊ณ๋์ด ์์ด, ๋ณผ๋ฅจ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ์ปจํ ์ด๋๊ฐ ์ฌ์์ ์ ๋ฐ์ดํฐ๊ฐ ๋ ์๊ฐ๋ค.
- ์ปจํ ์ด๋ ์๊ฐ ๋ง์์ง๋ฉด ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ค. ๋์ปค์ ๊ด๋ จ๋ ๊ฐ๋ ์ ํด๋น ํฌ์คํ ์์ ๋ค๋ฃจ๊ณ , VM๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ ๋ค์ ํฌ์คํ ์์ ๋ ์์ธํ ๋ค๋ฃจ๊ฒ ๋ค.
๋์ปค ์ฃผ์ ๊ฐ๋
๋์ปค ์ฃผ์ ๊ฐ๋ ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ๋ช ๋ น์ด ๋ฑ์ ๋ณ๋์ ํฌ์คํ ์์ ๋ค๋ฃจ๊ณ , ์ฌ๊ธฐ์๋ ๊ฐ๋จํ๊ฒ ์ ์๋ง ์ง๊ณ ๋์ด๊ฐ๋ค.
๋์ปค ์์ง
๋์ปค์ ๋ฐํ์์ ์ ๊ณตํด์ฃผ๋ ์์์ด๋ฉฐ, ์ปจํ ์ด๋๋ฅผ ์์ฑ, ์คํ ๊ทธ๋ฆฌ๊ณ ๊ด๋ฆฌํ๋ค. ๋์ปค ์์ง์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Docker CLI : ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ ์ธํฐํ์ด์ค์ด๋ค. ๋ช ๋ น์ ๋ฐ์ Daemon์ ์ ๋ฌํ๋ค.
- Docker API : Daemon๊ณผ CLI ์ฌ์ด, ํน์ ์ธ๋ถ ๋๊ตฌ์ Daemon ์ฌ์ด์ ํต์ ์ ๋ด๋นํ๋ REST API์ด๋ค.
- Docker Daemon(dockerd) : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ก, ๋ชจ๋ ๋์ปค ์์ ์ ์ค์ฌ์ด๋ค.
๋์ปค ํ์ผ
๋์ปค ํ์ผ์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฉ๋๋ก ์์ฑํ๋ ํ์ผ์ด๋ค. ๋์ปค ์ด๋ฏธ์ง์ ์ค๊ณ๋๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค. ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง ๋ช
๋ น์ด๋ฅผ ์์๋๋ก ์์ฑํ ํ
์คํธ ํ์ผ์ด๋ฉฐ, docker build ๋ช
๋ น์ด๋ก Dockerfile์ ์ฝ์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค. ์ด๋ ๋์ปค ํ์ผ์ ์ด๋ฆ์ Dockerfile์ผ๋ก ์ง์ ํด์ผํ๋ค. WAS๋ฅผ ๋์ปค๋ผ์ด์ ์ด์
ํ๋ฉด์ ์์ฑํ ๋์ปค ํ์ผ์ด๋ค.
# amazoncorretto 17 ๋ฒ์ ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ก ์ฌ์ฉ
FROM amazoncorretto:17-alpine
# ์์
๋๋ ํ ๋ฆฌ ์ค์
WORKDIR /app
# ๋ณด์์ ์ํด ์ ์ฉ ์ ์ /๊ทธ๋ฃน ์์ฑ (root ๊ถํ์ผ๋ก ์คํํ์ง ์๊ธฐ ์ํจ)
RUN addgroup -S konect && adduser -S konect -G konect
COPY build/libs/KONECT_API.jar KONECT_API.jar
# jar ํ์ผ์ ์์ ๊ถ์ konect ์ ์ ๋ก ๋ณ๊ฒฝ
RUN chown -R konect:konect KONECT_API.jar
# ์ดํ ๋ช
๋ น์ด๋ konect ์ ์ ๋ก ์คํ
USER konect:konect
EXPOSE 8080
# ์ปจํ
์ด๋ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌ
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:8080/actuator/health || exit 1
ENTRYPOINT ["java", "-jar", "KONECT_API.jar"]
๋์ปค ์ด๋ฏธ์ง
๋์ปค ์ด๋ฏธ์ง๋ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ
ํ๋ฆฟ์ด๋ค. ์์์ ์ธ๊ธํ ๋์ปค ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์
์คํ์ ํ์ํ ์ฝ๋, ๋ฐํ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๊ฒฝ ์ค์ ๋ค์ด ๋ชจ๋ ํฌํจ๋์ด ์๋ค.
๋์ปค ์ด๋ฏธ์ง์์ ์์์ผํ ํค์๋๋ ๋ ์ด์ด ๊ตฌ์กฐ์ด๋ค. ๋์ปค ํ์ผ์ ์ ์ํ ๋ช
๋ น์ด๊ฐ ์คํ๋ ๋๋ง๋ค ์๋ก์ด ๋ ์ด์ด๊ฐ ์์ธ๋ค. ํด๋น ๊ตฌ์กฐ ๋๋ถ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋ ์ด์ด๋ถํฐ ๋ค์ ๋น๋ํ๊ธฐ ๋๋ฌธ์ ๋น๋ ์๋๊ฐ ๋น ๋ฅด๋ค. ๊ฐ๋ น, ์์ค ์ฝ๋๋ง ๋ณ๊ฒฝ์ด ๋ ๊ฒฝ์ฐ COPY ๋ ์ด์ด๋ถํฐ ๋ค์ ๋น๋๋ฅผํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋์ปค ํ์ผ์์ ๋ช
๋ น์ด๋ฅผ ์์ฑํ๋ ์์๊ฐ ์ค์ํ๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ
๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๊ณต์ ํ๋ ์ ์ฅ์์ด๋ค. ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ธ Docker Hub๊ฐ ๋ํ์ ์ด๋ค. ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ๋ก๋ AWS ECR, Github Container Register ๋ฑ์ด ์๋ค. docker pull ~์ฒ๋ผ ๋ณ๋ ์ฃผ์ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์ ์๋ ์ด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Docker Hub๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋์ปค ์ปจํ ์ด๋
๋์ปค ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ธ์คํด์ค์ด๋ค. ํ๋์ ์ด๋ฏธ์ง๋ก ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ค. ๋ถ์ด๋นตํ๊ณผ ๋ถ์ด๋นต์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค. ๊ฐ ์ปจํ ์ด๋๋ ๋ ๋ฆฝ๋ ํ๊ฒฝ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋ก ๊ฒฉ๋ฆฌ๋์ด ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋ A์์ ๋ฐ์ํ ๋ฌธ์ ๊ฐ ์ปจํ ์ด๋ B๋ก ์ํฅ์ ์ฃผ์ง ์๋๋ค. ๋ํ, ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Stateless์ด๋ค. ๊ทธ๋ ๊ธฐ์ ์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๋ฉด ๋ด๋ถ์์ ๋ฐ์ํ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ ๋๋ค. ์ปจํ ์ด๋์์ ๋ฐ์ํ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ณด์กดํ๊ธฐ ์ํด์๋ ๋ค์์ ๋ค๋ฃฐ ๋ณผ๋ฅจ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ปจํ ์ด๋์ VM์ ๋ค๋ฃจ๋ ํฌ์คํ ์์ ์ถ๊ฐ๋ก ๋ ๋ค๋ฃฐ ์์ ์ด๋ค.
๋์ปค ๋ณผ๋ฅจ
์์์ ์์ ํ ๊ฒ์ฒ๋ผ ์ปจํ ์ด๋์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ด๋ค. ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
- Volume : ๋์ปค๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ์ ์ฅ์์ด๋ค.
/var/lib/docker/volumes์๋์ ์ ์ฅ๋๋ค. - Bind Mount : ํธ์คํธ์ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋์ ์ง์ ์ฐ๊ฒฐํ๋ค.
- tmpfs Mount : ๋ฉ๋ชจ๋ฆฌ์ ์์๋ก ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค. ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
๋์ปค ๋คํธ์ํฌ ๋์ปค ์ปจํ ์ด๋ ๊ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ฉ์ปค๋์ฆ์ด๋ค. ์์์ ์์ ํ ๊ฒ์ฒ๋ผ ์ปจํ ์ด๋๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๋คํธ์ํฌ ์ค์ ์์ด๋ ์ปจํ ์ด๋๋ผ๋ฆฌ ํต์ ํ ์ ์๋ค. ๊ฐ๋ น, WAS์ DB ๊ฐ๊ฐ ์ปจํ ์ด๋๋ก ์คํ๋๋ค๊ณ ๊ฐ์ ํ์ ๋ ๊ฐ์ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉด WAS์์ DB๋ฅผ ์ ๊ทผํ ์ ์๋ค. ํต์ ์ ํ๊ธฐ ์ํด์๋ IP๋ก ์ ๊ทผ์ ํ์ง๋ง, ๋์ปค์์๋ ์ปจํ ์ด๋ ์ด๋ฆ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
๋์ปค ์ปดํฌ์ฆ
์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ํ๋์ ํ์ผ๋ก ์ ์ํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๋๊ตฌ์ด๋ค. ๋คํธ์ํฌ, ๋ณผ๋ฅจ, ์ปจํ
์ด๋ ์ค์ ๋ฑ์ docker-compose.yml์ด๋ผ๋ ํ์ผ ํ๋์ ์ ์ํ๊ณ ๋ช
๋ น์ด ํ ๋ฒ์ผ๋ก ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ์คํํ ์ ์๋ค. ๋ง์ฝ ๋์ปค ์ปดํฌ์ฆ ์์ด ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ค๊ณ ํ๋ฉด, ๋คํธ์ํฌ ์์ฑ๋ถํฐ ๋ณผ๋ฅจ ์ค์ ๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ์คํ๊น์ง ๋ง์ ๋ช
๋ น์ด๋ฅผ CLI์ ์
๋ ฅํด์ผ ํ๋ค. ํ์ง๋ง ๋์ปค ์ปดํฌ์ฆ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช
๋ น์ด ํ๋ฒ์ผ๋ก ์ฌ์ ์ ์ ์๋ ์ค์ ๋ค์ด ์คํ๋๋ค.
๋์ปค๋ผ์ด์ ์ด์
๊ทธ๋ผ ํ๋ก์ ํธ์๋ ์ด๋ป๊ฒ ์ ์ฉ์ ํ๋์ง ์์๋ณด์. ๋จผ์ ์ธํ๋ผ ๊ตฌ์กฐ๋์ด๋ค.

- Github Action์์ ๋น๋ ๋ฐ ๋์ปค ์ด๋ฏธ์ง ์์ฑ
- ์์ฑ๋ ๋์ปค ์ด๋ฏธ์ง๋ ๋์ปค ํ๋ธ์ ํธ์ฌ, ์๋ฒ์์ ๋์ปค ์ด๋ฏธ์ง ํ
- ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ธ๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ ์งํ
๋์ปค ์ปดํฌ์ฆ๋ก MySQL, Redis ๊ทธ๋ฆฌ๊ณ ๋ธ๋ฃจ/๊ทธ๋ฆฐ WAS๋ฅผ ๋ฌถ์๋ค. ๋ธ๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ํ์ฌ ๋์ด์ ธ์๋ ์ปจํ ์ด๋๋ฅผ ํ์ธ ํ, ๋ฐ๋ ์ปจํ ์ด๋๋ฅผ ์๋กญ๊ฒ ๋์ด๋ค. ํด๋น ์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์ฌ๋ผ์จ ๊ฒฝ์ฐ, ๊ธฐ์กด์ ์คํ์ค์ธ ์ปจํ ์ด๋๋ฅผ ์ฃฝ์ด๋ ํ์์ผ๋ก ๊ตฌํ์ ํ๋ค. ๊ด๋ จํด์ ์ฐจ์ธฐ์ฐจ์ฆ ํฌ์คํ ์ ํด๋ณผ ์์ ์ด๋ค.
๋ง๋ฌด๋ฆฌ
์ด๋ฒ ํฌ์คํ ์์๋ ์์ ๊ณผ์ ์์ ์ ํ ๋ด์ฉ์ ๊ธฐ๋ณธ ์ ์๋ง ์ง๊ณ ๋์ด๊ฐ๋ค. ํฌ์คํ ์ ์งํํ๋ฉด์ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ ๋ค๋ฃฐ ์์ ์ด๋ค.