์ด๋ฒ ํฌ์คํธ์์๋ Docker ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
Docker ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ฉด, ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์ง์ ์ ๊ณผ์ ์ ๋์ฑ ์ํํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ด ๊ธ์์๋ docker buildx build ๋ช ๋ น์ด๋ฅผ ์ค์ฌ์ผ๋ก ์ด๋ฏธ์ง ๋น๋์ ๋ฐฐํฌ ๊ณผ์ ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Docker ์ด๋ฏธ์ง ๋น๋
Docker ์ด๋ฏธ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ทธ ์คํ์ ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ํฌํจํ๋ ๋ถ๋ณ์ ํ์ผ ์์คํ ์ค๋ ์ท์ ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
Docker Buildx Build ๋ช ๋ น์ด
Docker๋ ๊ธฐ๋ณธ์ ์ผ๋ก docker build ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ง๋ง, docker buildx build๋ ๋ ๊ฐ๋ ฅํ ๋น๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. buildx๋ ๋ฉํฐ ํ๋ซํผ ๋น๋, ์บ์ ๊ด๋ฆฌ, ๋น๋ ๋น๋ฐ ๊ด๋ฆฌ ๋ฑ ๋ค์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
์ฃผ์ ์ต์ ์ค๋ช
docker buildx build ๋ช ๋ น์ด๋ ์ฌ๋ฌ ๊ฐ์ง ์ต์ ์ ์ ๊ณตํ์ฌ ๋น๋ ๊ณผ์ ์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
์ฃผ์ ์ต์ ๊ณผ ๊ทธ ๊ธฐ๋ฅ์ ์๋์ ์์ธํ ์ค๋ช ๋๋ฆฝ๋๋ค.
- -t ๋๋ --tag
- ์ค๋ช : ๋น๋ํ ์ด๋ฏธ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ๊ณผ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ: -t [๋ฆฌํฌ์งํ ๋ฆฌ๋ช ]:[ํ๊ทธ]
- ๊ธฐ๋ณธ๊ฐ: ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก latest ํ๊ทธ๊ฐ ์ง์ ๋ฉ๋๋ค.
- ์ฃผ์์ฌํญ: ํ๊ทธ๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ๋๊ธ๋ง(dangling) ์ด๋ฏธ์ง๋ก ๋น๋๋ ์ ์์ผ๋ฏ๋ก, ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ํ๊ทธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- --build-arg
- ์ค๋ช : Dockerfile ๋ด์์ ์ฌ์ฉํ ๋น๋ ์ธ์(Build Arguments)๋ฅผ ์ ๋ฌํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ: --build-arg [๋ณ์๋ช ]=[๊ฐ]
- ์์: --build-arg NODE_VERSION=20.15.1
- ์ฉ๋: ๋น๋ ๊ณผ์ ์์ ๋ณ์ ๊ฐ์ ๋์ ์ผ๋ก ์ค์ ํ ๋ ์ ์ฉํฉ๋๋ค.
- -f ๋๋ --file
- ์ค๋ช : ์ฌ์ฉํ Dockerfile์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ: -f [Dockerfile ๊ฒฝ๋ก]
- ๊ธฐ๋ณธ๊ฐ: ์ง์ ํ์ง ์์ผ๋ฉด ๋น๋ ์ปจํ ์คํธ์ ์ต์๋จ์ ์๋ Dockerfile์ ์ฌ์ฉํฉ๋๋ค.
- ์ฉ๋: ์ฌ๋ฌ Dockerfile์ด ์๋ ๊ฒฝ์ฐ ํน์ ํ์ผ์ ์ง์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- --pull
- ์ค๋ช : ๋น๋ ์ ํญ์ ์ต์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ: --pull
- ์ฉ๋: ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐ์ํ์ฌ ์ต์ ์ํ๋ก ๋น๋ํ ๋ ์ ์ฉํฉ๋๋ค.
- ๋น๋ ์ปจํ
์คํธ
- ์ค๋ช : ๋น๋ํ ํ์ผ๋ค์ด ์์นํ ๋๋ ํ ๋ฆฌ๋ URL์ ์ง์ ํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ: ๋ง์ง๋ง ์ธ์๋ก ์ง์ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก .์ ์ฌ์ฉํ์ฌ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
Docker Buildx Build ๋ช ๋ น์ด ์ต์ ์ค๋ช
์ต์ | ์ค๋ช | ์ฌ์ฉ๋ฒ | ์์ ๋ฐ ์ฃผ์์ฌํญ |
-t ๋๋ --tag | ๋น๋ํ ์ด๋ฏธ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ๊ณผ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. | -t [๋ฆฌํฌ์งํ ๋ฆฌ๋ช ]:[ํ๊ทธ] | - ์์: -t learncodeit/mbti:embedded-db - ์ฃผ์์ฌํญ: ํ๊ทธ๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด latest ํ๊ทธ๊ฐ ์๋์ผ๋ก ์ง์ ๋ฉ๋๋ค. ํ๊ทธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋๊ธ๋ง(dangling) ์ด๋ฏธ์ง๋ก ๋น๋๋ ์ ์์ผ๋ฏ๋ก, ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. |
--build-arg | Dockerfile ๋ด์์ ์ฌ์ฉํ ๋น๋ ์ธ์(Build Arguments)๋ฅผ ์ ๋ฌํฉ๋๋ค. | --build-arg [๋ณ์๋ช ]=[๊ฐ] | - ์์: --build-arg NODE_VERSION=20.15.1 - ์ฉ๋: ๋น๋ ๊ณผ์ ์์ ๋ณ์ ๊ฐ์ ๋์ ์ผ๋ก ์ค์ ํ ๋ ์ ์ฉํฉ๋๋ค. |
-f ๋๋ --file | ์ฌ์ฉํ Dockerfile์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. | -f [Dockerfile ๊ฒฝ๋ก] | - ์์: -f ./Dockerfile - ๊ธฐ๋ณธ๊ฐ: ์ง์ ํ์ง ์์ผ๋ฉด ๋น๋ ์ปจํ ์คํธ์ ์ต์๋จ์ ์๋ Dockerfile์ ์ฌ์ฉํฉ๋๋ค. - ์ฉ๋: ์ฌ๋ฌ Dockerfile์ด ์๋ ๊ฒฝ์ฐ ํน์ ํ์ผ์ ์ง์ ํ ๋ ์ฌ์ฉํฉ๋๋ค. |
--pull | ๋น๋ ์ ํญ์ ์ต์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค. | --pull | - ์ฉ๋: ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐ์ํ์ฌ ์ต์ ์ํ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ์ ์ฉํฉ๋๋ค. |
๋น๋ ์ปจํ ์คํธ | ๋น๋ํ ํ์ผ๋ค์ด ์์นํ ๋๋ ํ ๋ฆฌ๋ URL์ ์ง์ ํฉ๋๋ค. | [๋น๋ ์ปจํ ์คํธ] (์ผ๋ฐ์ ์ผ๋ก .) | - ์ค๋ช
: ๋ง์ง๋ง ์ธ์๋ก ์ง์ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก .์ ์ฌ์ฉํ์ฌ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. - ์ฉ๋: ๋น๋์ ํ์ํ ๋ชจ๋ ํ์ผ์ด ์์นํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. |
๋์ปคํ์ผ ๋น๋ ๋ช ๋ น์ด ์์
์๋๋ docker buildx build ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ์์ ์ ๋๋ค.
๊ฐ ์ต์ ์ด ์ด๋ค ์ญํ ์ ํ๋์ง ์์ธํ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
docker buildx build \
-t daehyunbigbread/mbti:embedded-db \
-t daehyunbigbread/mbti \
--build-arg NODE_VERSION=20.15.1 \
-f ./Dockerfile \
--pull \
.
๋ช ๋ น์ด ์ค๋ช
- -t daehyunbigbread/mbti:embedded-db์ -t daehyunbigbread/mbti:
- ์ค๋ช : ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ learncodeit/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ embedded-db ํ๊ทธ์ latest ํ๊ทธ๋ก ๊ฐ๊ฐ ์ง์ ํฉ๋๋ค.
- ํจ๊ณผ: ๋์ผํ ์ด๋ฏธ์ง์ ์ฌ๋ฌ ํ๊ทธ๋ฅผ ๋ถ์ฌ, ๋ค์ํ ๋ฒ์ ์ด๋ ์ํ๋ฅผ ์ฝ๊ฒ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- --build-arg NODE_VERSION=20.15.1:
- ์ค๋ช : Dockerfile ๋ด์์ ์ฌ์ฉํ NODE_VERSION ๋น๋ ์ธ์์ 20.15.1 ๊ฐ์ ์ ๋ฌํฉ๋๋ค.
- ํจ๊ณผ: Dockerfile์์ ๋์ ์ผ๋ก Node.js ๋ฒ์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
- -f ./Dockerfile:
- ์ค๋ช : ํ์ฌ ๋๋ ํ ๋ฆฌ์ Dockerfile์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค.
- ํจ๊ณผ: ๋ช ์์ ์ผ๋ก ํน์ Dockerfile์ ์ง์ ํ์ฌ ๋น๋ํ ์ ์์ต๋๋ค.
- --pull:
- ์ค๋ช : ๋น๋ ์ ํญ์ ์ต์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ํจ๊ณผ: ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐ์ํ์ฌ ์ต์ ์ํ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
- .:
- ์ค๋ช : ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๋น๋ ์ปจํ ์คํธ๋ก ์ฌ์ฉํฉ๋๋ค.
- ํจ๊ณผ: ๋น๋์ ํ์ํ ํ์ผ๋ค์ด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋น๋๋ ์ด๋ฏธ์ง ํ์ธํ๊ธฐ
์ด๋ฏธ์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ ํ, ๋ก์ปฌ ํ๊ฒฝ์์ ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ๋น๋๊ฐ ์ ๋๋ก ๋์๋์ง, ์์ํ ํ๊ทธ๊ฐ ๋ถ์ด์๋์ง ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
docker image ls
์์ ์ถ๋ ฅ
REPOSITORY TAG IMAGE ID CREATED SIZE
daehyunbigbread/mbti embedded-db 5dbed223aa10 About a minute ago 1.86GB
daehyunbigbread/mbti latest 5dbed223aa10 About a minute ago 1.86GB
- REPOSITORY: ์ด๋ฏธ์ง๊ฐ ์ํ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ๋๋ค.
- TAG: ์ด๋ฏธ์ง์ ํ๊ทธ๋ก, ํน์ ๋ฒ์ ์ด๋ ์ํ๋ฅผ ๋ํ๋ ๋๋ค.
- IMAGE ID: ์ด๋ฏธ์ง์ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- CREATED: ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ์๊ฐ์ ๋๋ค.
- SIZE: ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ๋๋ค.
์ ์์์์ daehyunbigbread/mbti:embedded-db์ daehyunbigbread/mbti:latest ๋ ๊ฐ์ ํ๊ทธ๊ฐ ๋์ผํ ์ด๋ฏธ์ง ID๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๋์ผํ ์ด๋ฏธ์ง์ ์ฌ๋ฌ ํ๊ทธ๋ฅผ ์ง์ ํ ๊ฒฐ๊ณผ์ ๋๋ค.
Docker Hub์ ์ด๋ฏธ์ง ๋ฐฐํฌํ๊ธฐ
๋ก์ปฌ์์ ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ Docker Hub์ ๊ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌํ์ฌ, ๋ค๋ฅธ ํ๊ฒฝ์ด๋ ํ์๊ณผ ๊ณต์ ํ ์ ์์ต๋๋ค. Docker Hub๋ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ Docker ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ ์ค ํ๋๋ก, ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ํธ์(push)ํ๊ณ ํ(pull)ํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง ํธ์ ๋ช ๋ น์ด
Docker ์ด๋ฏธ์ง๋ฅผ Docker Hub์ ํธ์ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํธ์ํ๊ธฐ ์ ์ Docker Hub์ ๋ก๊ทธ์ธ๋์ด ์์ด์ผ ํฉ๋๋ค. ์์ง ๋ก๊ทธ์ธํ์ง ์์๋ค๋ฉด, ๋จผ์ ๋ก๊ทธ์ธํ์ธ์.
Docker Hub ๋ก๊ทธ์ธ
docker login
๋ก๊ทธ์ธ ์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ์ธ์ฆ์ด ์๋ฃ๋ฉ๋๋ค.
์ด๋ฏธ์ง ํธ์
๊ฐ๋ณ ํ๊ทธ๋ฅผ ํธ์ํ๊ฑฐ๋, ๋ชจ๋ ํ๊ทธ๋ฅผ ํ ๋ฒ์ ํธ์ํ ์ ์์ต๋๋ค.
๊ฐ๋ณ ํ๊ทธ ํธ์
์ฌ๊ธฐ์ daehyunbigbread๋ ์ ๊ฐ์ธ docker ๋ฆฌํฌ์งํ ๋ฆฌ๋ช ์ ๋๋ค. ํน์๋ ์ด๊ฑธ ๋ฐ๋ผํ์๋ ๋ถ๋ค์ ์ฌ๋ฌ๋ถ๊ป๋ก ํ์ ์ผ ํฉ๋๋ค.
- ์ค๋ช : embedded-db ํ๊ทธ์ latest ํ๊ทธ๋ฅผ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ๊ฐ๊ฐ ํธ์ํฉ๋๋ค.
- ํจ๊ณผ: ๊ฐ ํ๊ทธ์ ํด๋นํ๋ ์ด๋ฏธ์ง๊ฐ Docker Hub์ ์ ๋ก๋๋ฉ๋๋ค.
docker image push daehyunbigbread/mbti:embedded-db
docker image push daehyunbigbread/mbti:latest
๋ชจ๋ ํ๊ทธ ํ ๋ฒ์ ํธ์
- ์ค๋ช : daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ํ ๋ฒ์ ํธ์ํฉ๋๋ค.
- ํจ๊ณผ: daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ๊ทธ๊ฐ Docker Hub์ ์ ๋ก๋๋ฉ๋๋ค.
docker image push -a daehyunbigbread/mbti
Docker Hub์์ ๋ฐฐํฌ๋ ์ด๋ฏธ์ง ํ์ธ
์ด๋ฏธ์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํธ์ํ ํ, Docker Hub ์น์ฌ์ดํธ์ ์ ์ํ์ฌ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- Docker Hub ์น์ฌ์ดํธ ์ ์
- Docker Hub์ ์ ์ํ์ฌ ๋ก๊ทธ์ธํฉ๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ํ์ธ
- ํ๊ทธ ๋ชฉ๋ก: ๋ฐฐํฌํ ๋ชจ๋ ํ๊ทธ(embedded-db, latest)๊ฐ ๋์ด๋ฉ๋๋ค.
- ์ด๋ฏธ์ง ์ ๋ณด: ๊ฐ ํ๊ทธ์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ํ๋กํ ๋ฉ๋ด์์ Repositories๋ฅผ ์ ํํ๊ณ , ๋ฐฐํฌํ daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ฌ๊ธฐ์ ํธ์๋ ๋ชจ๋ ํ๊ทธ์ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Nest.js ์๋ฒ ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ฐฐํฌ
์ด์ ์ค์ ๋ก Nest.js ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ Docker Hub์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
์ธ๋ถ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ์ฌ ์คํ๋์ด์ผ ํ๋ mbti ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ๋ฐฐํฌํฉ๋๋ค.
์ค์ต ์๊ฑด
- ๋ฒ ์ด์ค ์ด๋ฏธ์ง: node:20.15.1
- ์ด๋ฏธ์ง ๋ด ์์ค ์ฝ๋ ๊ฒฝ๋ก: /apps/mbti
- ํ๊ฒฝ ๋ณ์:
- PORT: 3001
- DB_HOST: localhost
- DB_PORT: 3306
- DB_NAME: db_mbti
- DB_USERNAME: user_mbti
- DB_PASSWORD: pw_mbti
- node_modules ๋๋ ํ ๋ฆฌ๋ ๋ณต์ฌ ๋์์์ ์ ์ธํ๊ธฐ
์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋ ๋ค์ด๋ก๋
๋จผ์ , ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํฉ๋๋ค. ๋ค์ ๋งํฌ์์ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๋ค์ด๋ก๋ ๋ฐ์ mbti-mysql.zip ํ์ผ์ ์์ถ ํด์ ํฉ๋๋ค.
unzip mbti-mysql.zip -d mbti-mysql
cd mbti-mysql
Docker ์ด๋ฏธ์ง ๋น๋
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํด docker buildx build ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋๋ ๋น๋ ๋ช ๋ น์ด์ ๊ฐ ์ต์ ์ ์์ธ ์ค๋ช ์ ๋๋ค.
docker buildx build \
-t daehyunbigbread/mbti:mysql \
-t daehyunbigbread/mbti \
--pull \
.
๋ช ๋ น์ด ์ค๋ช
- -t daehyunbigbread/mbti:mysql:
- ์ค๋ช : daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ mysql ํ๊ทธ๋ฅผ ๋ถ์ธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค.
- ํจ๊ณผ: ํน์ ๊ธฐ๋ฅ(mysql ์ฐ๋)์ ๋ํ๋ด๋ ํ๊ทธ๋ก ์ด๋ฏธ์ง๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
- -t daehyunbigbread/mbti:
- ์ค๋ช : ๋์ผํ ์ด๋ฏธ์ง์ latest ํ๊ทธ๋ฅผ ๋ถ์ ๋๋ค.
- ํจ๊ณผ: ์ต์ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- --pull:
- ์ค๋ช : ๋น๋ ์ ํ์ํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ํญ์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ค์ด๋ก๋ํฉ๋๋ค.
- ํจ๊ณผ: ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ํ์ฌ ์ต์ ์ํ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
- .:
- ์ค๋ช : ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๋น๋ ์ปจํ ์คํธ๋ก ์ฌ์ฉํฉ๋๋ค.
- ํจ๊ณผ: Dockerfile๊ณผ ๋น๋์ ํ์ํ ๋ชจ๋ ํ์ผ์ด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋น๋ ์คํ ์์
docker buildx build \
-t daehyunbigbread/mbti:mysql \
-t daehyunbigbread/mbti \
--pull \
.
๋น๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ๋ํ๋ฉ๋๋ค.
Successfully built 5dbed223aa10
Successfully tagged daehyunbigbread/mbti:mysql
Successfully tagged daehyunbigbread/mbti:latest
๋น๋๋ ์ด๋ฏธ์ง ํ์ธ
๋น๋๊ฐ ์๋ฃ๋ ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ์์ ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
docker image ls
์์ ์ถ๋ ฅ
REPOSITORY TAG IMAGE ID CREATED SIZE
daehyunbigbread/mbti mysql 5dbed223aa10 About a minute ago 1.86GB
daehyunbigbread/mbti latest 5dbed223aa10 About a minute ago 1.86GB
- REPOSITORY: ์ด๋ฏธ์ง๊ฐ ์ํ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ๋๋ค.
- TAG: ์ด๋ฏธ์ง์ ํ๊ทธ๋ก, mysql๊ณผ latest ๋ ๊ฐ์ง ํ๊ทธ๊ฐ ๋์ผํ ์ด๋ฏธ์ง ID๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
- IMAGE ID: ์ด๋ฏธ์ง์ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- CREATED: ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ์๊ฐ์ ๋๋ค.
- SIZE: ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ๋๋ค.
Docker Hub์ ์ด๋ฏธ์ง ๋ฐฐํฌ
๋น๋๋ ์ด๋ฏธ์ง๋ฅผ Docker Hub์ ๋ฐฐํฌํ์ฌ, ๋ค๋ฅธ ํ๊ฒฝ์ด๋ ํ์๊ณผ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง ํธ์ ๋ช ๋ น์ด
docker image push daehyunbigbread/mbti:mysql
docker image push daehyunbigbread/mbti:latest
๋๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ํ ๋ฒ์ ํธ์ํ ์๋ ์์ต๋๋ค.
docker image push -a daehyunbigbread/mbti
ํธ์ ๊ณผ์ ์ค๋ช
- docker image push daehyunbigbread/mbti:mysql:
- ์ค๋ช : daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ mysql ํ๊ทธ๋ฅผ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ํธ์ํฉ๋๋ค.
- ํจ๊ณผ: ํด๋น ํ๊ทธ๊ฐ ๋ถ์ ์ด๋ฏธ์ง๊ฐ Docker Hub์ ์ ๋ก๋๋ฉ๋๋ค.
- docker image push daehyunbigbread/mbti:latest:
- ์ค๋ช : ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ์ latest ํ๊ทธ๋ฅผ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ํธ์ํฉ๋๋ค.
- ํจ๊ณผ: latest ํ๊ทธ๊ฐ ๋ถ์ ์ด๋ฏธ์ง๊ฐ Docker Hub์ ์ ๋ก๋๋ฉ๋๋ค.
- docker image push -a daehyunbigbread/mbti:
- ์ค๋ช : daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ํ ๋ฒ์ ํธ์ํฉ๋๋ค.
- ํจ๊ณผ: mysql๊ณผ latest ํ๊ทธ๊ฐ ๋์์ ํธ์๋ฉ๋๋ค.
ํธ์ ๊ฒฐ๊ณผ ํ์ธ
Docker Hub ์น์ฌ์ดํธ์ ์ ์ํ์ฌ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ธํ๋ฉด, ์ ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ ํ์ด์ง: ๋ฐฐํฌํ daehyunbigbread/mbti ๋ฆฌํฌ์งํ ๋ฆฌ์์ mysql๊ณผ latest ํ๊ทธ๊ฐ ์ ์์ ์ผ๋ก ์ ๋ก๋๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
- ํ๊ทธ ๋ชฉ๋ก: ๊ฐ ํ๊ทธ์ ๋ํ ์ด๋ฏธ์ง ์ ๋ณด์ ๋น๋ ์๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
์ถ๊ฐ ํ ๋ฐ ์ฃผ์์ฌํญ
Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ ๋ ์ ์ํด์ผ ํ ๋ช ๊ฐ์ง ํ๊ณผ ์ฃผ์์ฌํญ์ ์๊ฐํฉ๋๋ค.
์ด๋ฏธ์ง ํ๊ทธ ๊ด๋ฆฌ
- ๋ฒ์ ํ๊ทธ ์ฌ์ฉ: v1.0.0, v1.0.1 ๋ฑ ๋ฒ์ ๋ณ๋ก ํ๊ทธ๋ฅผ ์ง์ ํ์ฌ ํน์ ๋ฒ์ ์ ์ฝ๊ฒ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- latest ํ๊ทธ ์ฃผ์: latest ํ๊ทธ๋ ํญ์ ์ต์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก, ๋ฐฐํฌ ํ๊ฒฝ์์๋ ๋ช ์์ ์ธ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
- ์ผ๊ด๋ ํ๊ทธ ์ ๋ต: ํ๋ก์ ํธ๋ง๋ค ์ผ๊ด๋ ํ๊ทธ ์ ๋ต์ ์๋ฆฝํ์ฌ ๊ด๋ฆฌ์ ํธ์์ฑ์ ๋์ ๋๋ค.
์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ ํ
์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ํด์๋ก ๋น๋ ๋ฐ ๋ฐฐํฌ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค.
- ๋ฉํฐ ์คํ ์ด์ง ๋น๋ ์ฌ์ฉ: ๋น๋์ ํ์ํ ๋๊ตฌ๋ ๋น๋ ๋จ๊ณ์์๋ง ์ฌ์ฉํ๊ณ , ์ต์ข ์ด๋ฏธ์ง์๋ ํฌํจํ์ง ์์ต๋๋ค.
# ๋น๋ ์คํ
์ด์ง
FROM node:20.15.1 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build
# ์คํ ์คํ
์ด์ง
FROM node:20.15.1
WORKDIR /app
COPY --from=builder /app .
ENV PORT=3000
ENTRYPOINT ["npm", "run", "start"]
- ๋ถํ์ํ ํ์ผ ์ ์ธ: .dockerignore ํ์ผ์ ํ์ฉํ์ฌ ๋ถํ์ํ ํ์ผ์ด ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์๋๋ก ํฉ๋๋ค.
- ๊ฒฝ๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ ํ: ๊ฐ๋ฅํ๋ค๋ฉด Alpine๊ณผ ๊ฐ์ ๊ฒฝ๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค.
FROM node:20.15.1-alpine
์ด๋ฏธ์ง ๋ณด์ ๊ฐํ
์ด๋ฏธ์ง ๋ด ์ํํธ์จ์ด์ ์ทจ์ฝ์ ์ ๊ด๋ฆฌํ๊ณ , ์ ๋ขฐํ ์ ์๋ ์์ค์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ ๋ขฐํ ์ ์๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ฌ์ฉ: ๊ณต์ ์ด๋ฏธ์ง๋ ๊ฒ์ฆ๋ ๋ ํฌ์งํ ๋ฆฌ์์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค.
- ์ต์ ํจ์น ์ ์ฉ: ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ๋ณด์ ํจ์น๋ฅผ ์ ์ฉํฉ๋๋ค.
- ์ทจ์ฝ์ ์ค์บ๋: ์ด๋ฏธ์ง ๋ด์ ์ทจ์ฝ์ ์ ์ค์บํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์์ ๊ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Docker Security Scanning ๋๋ Clair์ ๊ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด ์ดํดํ๊ธฐ
Docker ์ด๋ฏธ์ง๋ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ๋ ์ด์ด๋ ์ด์ ๋ ์ด์ด ์์ ์์ด๋ฉฐ, ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๋ ์ด์ด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด ๋น๋ ์๊ฐ์ ๋จ์ถํ๊ณ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
- ๋ช ๋ น์ด ์์ ์ต์ ํ: ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ๋ช ๋ น์ด๋ฅผ Dockerfile ์๋จ์ ๋ฐฐ์นํ์ฌ ์บ์ ํจ์จ์ ๋์ ๋๋ค.
# ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ์์กด์ฑ ์ค์น
RUN npm ci
# ์์ค ์ฝ๋ ๋ณต์ฌ
COPY . /app
# ์ ํ๋ฆฌ์ผ์ด์
๋น๋
RUN npm run build
- RUN ๋ช ๋ น์ด ๊ฒฐํฉ: ์ฌ๋ฌ ๊ฐ์ RUN ๋ช ๋ น์ด๋ฅผ ํ๋๋ก ๊ฒฐํฉํ์ฌ ๋ ์ด์ด ์๋ฅผ ์ค์ ๋๋ค.
RUN apt-get update && apt-get install -y \
package1 \
package2 \
&& rm -rf /var/lib/apt/lists/*
Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. docker buildx build ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ๋น๋ํ๊ณ , Docker Hub์ ๊ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌํจ์ผ๋ก์จ ํ ๋ด์์ ์์ฝ๊ฒ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ํ, ์ด๋ฏธ์ง ํ๊ทธ ๊ด๋ฆฌ, ํฌ๊ธฐ ์ต์ ํ, ๋ณด์ ๊ฐํ ๋ฑ์ ํ์ ํตํด ๋์ฑ ํจ๊ณผ์ ์ผ๋ก Docker๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
- Docker ๊ณต์ ๋ฌธ์: https://docs.docker.com/
- Dockerfile ์ฐธ์กฐ: Dockerfile reference
- Docker Hub: Docker Hub Container Image Library | App Containerization
'โ๏ธ Cloud Native > ๐ณ Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Docker Network: ๋์ปค ๋คํธ์ํฌ (0) | 2025.01.15 |
---|---|
[Docker] Docker Container ์คํํ๊ธฐ: ๋จ๊ณ๋ณ ๊ฐ์ด๋ (0) | 2025.01.15 |
[Docker] Dockerfile ์์ฑํ๊ธฐ: ๋จ๊ณ๋ณ ๊ฐ์ด๋ (0) | 2025.01.10 |
[Docker] ์ด๋ฏธ์ง ๊ด๋ฆฌํ๊ธฐ: Docker ์ด๋ฏธ์ง ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ (0) | 2025.01.10 |
[Docker] Container์ ์ด๋ฏธ์ง (0) | 2025.01.10 |