ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿงธ ์‚ฌ๋‚ด์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋„์ปค ์Šคํ„ฐ๋””๋ฅผ ์‹ค์Šต ๋ฐ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.

Dockerfile ๋ฌธ๋ฒ•

  • FROM
  • ENV
  • ADD
  • COPY
  • WORKDIR
  • EXPOSE
  • ENTRYPOINT
  • RUN
  • CMD
  • USER
  • ARG
  • LABEL
  • VOLUME
  • ONBUILD
  • STOPSIGNAL
  • HEALTHCHECK

๋ณดํ†ต FROM ์—์„œ ์‹œ์ž‘ํ•ด์„œ RUN, ENTRYPOINT, CMD๋กœ ๋๋‚œ๋‹ค.

์•„๋ž˜ 5๊ฐœ์˜ ๋ฌธ๋ฒ•์€ ์ž˜ ์•ˆ์“ด๋‹ค๊ณ  ํ•œ๋‹ค.

๐Ÿป
์“ฐ๋”๋ผ๋„ ๋„์ปค ๊ณ ์ˆ˜๋“ค์ด ์“ด๋‹ค๊ณ  ํ•˜๋„ค์š”.

 

์Šคํ„ฐ๋”” ๋ฉ˜ํ† ๋‹˜์€ LABEL๋ณด๋‹ค๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์‹œ๋Š” ํŽธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

RUN vs CMD vs ENTRYPOINT

  • RUN : ๋„์ปคํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ์ˆœ๊ฐ„์— ์‹คํ–‰
  • CMD : ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ๋•Œ ์ˆ˜ํ–‰
  • ENTRYPOINT : CMD์™€ ์œ ์‚ฌํ•˜๋‚˜ ์ปจํ…Œ์ด๋‚˜ ์ƒ์„ฑ๋˜๊ณ  ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ง€์ •

CMD vs ENTRYPOINT

  • CMD : docker run์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • ENTRYPOINT : docker run์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ ⇒ ํ•ญ์ƒ ์‹คํ–‰

Build ์‹ค์Šต์„ ํ†ตํ•ด CMD์™€ ENTRYPOINT ์ฐจ์ด์ ์„ ์งš์–ด๋ณด์ž.

# syntax=docker/dockerfile:1
FROM openjdk:11.0.14.1-jdk AS build
WORKDIR /app
COPY ./ ./
RUN ./gradlew bootjar
########
#deploy#
########
FROM openjdk:11.0.14-jdk-slim-buster
WORKDIR /
COPY --from=build /app/build/libs/*.jar /app/build/libs/example_spring.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/build/libs/example_spring.jar"]
# ENTRYPOINT ["java", "-jar", "/app/build/libs/example_spring.jar"]

๋นŒ๋“œ ์ „์— ๊ฐ ๋ฌธ๋‹จ์ด ์˜๋ฏธํ•˜๋Š”๊ฑธ ์‚ดํŽด๋ณด์ž.

dockerfile:1

dockerfile:1์ด ์˜๋ฏธํ•˜๋Š”๊ฑด ํƒœ๊ทธ๋‹ค.

docker๊ฐ€ ๊ณต์‹์œผ๋กœ ์ง€์›ํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋‹ค.

1์ด๋ผ๋Š” ๊ฑด 1.x.x ๋ฒ„์ „์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

FROM openjdk:11.0.14.1-jdk AS build

์—ฌ๊ธฐ์„œ AS build๋Š” openjdk:11.0.14.1-jdk๋ฅผ build๋ผ๋Š” ๋ณ„์นญ(alias)์„ ๋ถ€์—ฌํ•œ ๊ฑธ๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

WORKDIR /app, COPY ./ ./

WORKDIR๊ฐ€ /app ์œผ๋กœ ์žก์•˜์œผ๋‹ˆ COPY ./ ์—์„œ ./์€ /app๋‹ค.

์ด์   CMD๋กœ ๋จผ์ € ๋นŒ๋“œ๋ฅผ ํ•ด๋ณด์ž.

// ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” dockerFile์„ ์‹คํ–‰ํ•˜์—ฌ tmp๋ผ๋Š” ์ด๋ฆ„์˜ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ(๋นŒ๋“œํ•˜๊ธฐ)
docker build . -t tmp

๋นŒ๋“œ ํ›„ docker run์„ ํ•ด๋ณด์ž.

docker run -p 8080:8080 tmp
๐Ÿค”
8080:8080์€ ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ?

 

๋„์ปค ๋‚ด์˜ 8080 ํฌํŠธ๋ฅผ ๋‚ด ๋กœ์ปฌ 8080 ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

CMD ๋ช…๋ น์–ด๋กœ run์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์ œ๋Š” CMD๋ฅผ ์ฃผ์„ํ•˜๊ณ  ENTRYPOINT ์ฃผ์„์„ ํ‘ผ ๋’ค, ๋‹ค์‹œ build ๋ฐ run์„ ํ•ด๋ณด์ž.

๊ทธ ๋’ค docker images๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๊ธฐ์กด tmp๋Š” ๊ทธ๋Œ€๋กœ ์žˆ๊ณ  ์œ„ dockerfile๋กœ ๋งŒ๋“  ์ด๋ฏธ์ง€๋Š” <none>์ด ๋œ๋‹ค.

์ด์œ ๋Š” ๊ธฐ์กด์˜ tmp๋ผ๋Š” ์ด๋ฆ„์ด ์žˆ๋‹ค๋ฉด ๋„์ปค๊ฐ€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด <none>์ด๋ผ๋Š” ๊ฐ’์„ ์ž„์˜๋กœ ๋„ฃ์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€์— cmd์™€ entrypoint ํƒœ๊ทธ๋ฅผ ๊ฐ๊ฐ ์ฃผ์–ด ๊ตฌ๋ถ„ํ•ด์ฃผ์ž.

docker tag b55d5353eae9 tmp:cmd

 

-ti ์˜ต์…˜์„ ํ†ตํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค.

๐Ÿค”
-ti ์˜ต์…˜์ด ๊ธฐ์–ต์ด ์•ˆ๋‚œ๋‹ค๋ฉด ์ด์ „ ํฌ์ŠคํŒ…์ธ ๋„์ปค ์Šคํ„ฐ๋”” [1]์„ ์ฐพ์•„๋ณด์ž.
 

๋„์ปค ์Šคํ„ฐ๋”” [1] - ์ปค๋งจ๋“œ๋กœ ์‹คํ–‰ํ•ด๋ณด๊ธฐ

๐Ÿงธ ์‚ฌ๋‚ด์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋„์ปค ์Šคํ„ฐ๋””๋ฅผ ์‹ค์Šต ๋ฐ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. TAG latest : ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ ์•ˆ์ „์„ ์œ„ํ•ด์„œ ๋ฒ„์ „์„ TAG์— ๋‹ฌ์•„์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค. IMAGE ID ํ•ด๋‹น ๋„์ปค ์ด

kkoon9.tistory.com

docker run -ti -p 8080:8080 tmp:entrypoint /bin/bash

 

entrypoint๋Š” ์‹คํ–‰ ์•ˆ๋˜๊ณ , cmd๋Š” ์‹คํ–‰๋œ๋‹ค.

docker run -ti -p 8080:8080 tmp:cmd /bin/bash

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ cmd์™€ entrypoint๋ฅผ ๋‹ค์‹œ ์งš์–ด๋ณด์ž.

์œ„ ์˜ˆ์‹œ๋กœ ๋ฏธ๋ฃจ์–ด๋ดค์„ ๋•Œ cmd๋Š” run์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด์— ENTRYPOINT๋Š” ๋ฌด์กฐ๊ฑด dockerfile์— ์ •์˜๋œ๋Œ€๋กœ๋งŒ ์‹คํ–‰์ด ๋˜๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 ๐Ÿป
๋ณดํ†ต์€ cmd๋กœ ๋นŒ๋“œํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

dockerfile์—์„œ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๊ฒƒ

  • . ์œผ๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ .dockerignore๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ๋ฅผ ์•ˆํ•  ๊ฑธ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋นŒ๋“œ๋Š” ํฐ ๊ฑธ๋กœ ์“ฐ๊ณ  ์‹คํ–‰์„ ์œ„ํ•ด slim alpine(์•ŒํŒŒ์ธ)์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
    • alpine์€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ์šด์˜์ฒด์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋„์ปค ๋ช…๋ น์–ด ํ•œ ์ค„ ํ•œ ์ค„์„ ๋ ˆ์ด์–ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.
    • ๋ ˆ์ด์–ด๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์บ์‹œ๊ฐ€ ์Œ“์ด๊ณ  ๋ฐ”๋€ ๋ ˆ์ด์–ด๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
    • ๋งŒ์•ฝ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋‚ฎ์€ ๋ ˆ์ด์–ด์— ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.
    • ์ค‘๊ฐ„์— ๋ผ์›Œ๋„ฃ์œผ๋ฉด ์•„๋ž˜ ์žˆ๋Š” ๋ ˆ์ด์–ด๋Š” ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋Š๋ฆฌ๋‹ค.

 

docker์— ๋Œ€ํ•ด์„œ ๊นŠ๊ฒŒ ๋‹ค๋ฃฌ ๊ฒƒ์ด ์•„๋‹Œ ์‹ค์Šต์„ ํ†ตํ•ด ํ•ต์‹ฌ๋งŒ ๋ฐฐ์šด ๊ฑธ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ด๋ผ ๋งŽ์ด ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๋Œ€ํ•œ ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ๋„์ปค์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃฌ ํฌ์ŠคํŒ…์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ