[Docker] (10) Dockerfile ๋นŒ๋“œ ์˜ˆ์‹œ | ENTRYPOINT ์™€ CMD์˜ ์ฐจ์ด

2023. 8. 24. 18:57ยท๐Ÿ’ป Programming/Docker & Kubernetes
๋ฐ˜์‘ํ˜•
Docker ์ „์ฒด ํฌ์ŠคํŒ…
๋”๋ณด๊ธฐ

[Docker] (1) ๋„์ปค ๊ฐœ๋… ์„ค๋ช… | ๋„์ปค๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

[Docker] (2) ๋„์ปค & ๋„์ปค์ปดํฌ์ฆˆ ๋‹ค์šด๋กœ๋“œ

[Docker] (3) ๋„์ปค ํ•ต์‹ฌ ๊ฐœ๋… - ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋„์ปค ํ—ˆ๋ธŒ

[Docker] (4) docker pull(์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ) & docker run(์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ/์‹คํ–‰) & ํฌํŠธํฌ์›Œ๋”ฉ(ํฌํŠธ๋งคํ•‘)

[Docker] (5) ๋„์ปค run ๋ช…๋ น์–ด ์˜ต์…˜, ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (6) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ ‘์†ํ•˜๊ธฐ - docker exec & docker attach

[Docker] (7) ๋„์ปค volume(๋ณผ๋ฅจ) ์˜ต์…˜ - ์ปจํ…Œ์ด๋„ˆ ํด๋”์™€ ํ˜ธ์ŠคํŠธ ํด๋” ์—ฐ๊ฒฐํ•˜๊ธฐ

[Docker] (8) ๋„์ปค commit(์ปค๋ฐ‹) & push(ํ‘ธ์‹œ) - ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ  ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ

[Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

[Docker] (10) Dockerfile ๋นŒ๋“œ ์˜ˆ์‹œ | ENTRYPOINT ์™€ CMD์˜ ์ฐจ์ด

[Docker] (11) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ vscode ์—ฐ๋™ํ•˜๊ธฐ | ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐœ๋ฐœ

[Docker] (12) ๊นƒํ—ˆ๋ธŒ๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ | Packages Container Registry

 

 

docker build -t java-server .
docker run -dit -p 8080:8081 java-server

CMD์™€ ENTRYPOINT๋Š” ๋‘˜ ๋‹ค ๋„์ปค ์ด๋ฏธ์ง€ ๋‚ด์—์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด์ด์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

CMD
  • CMD ๋ช…๋ น์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ์ง€์ •
  • ํ•˜์ง€๋งŒ, docker run ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ์ถ”๊ฐ€ ์ธ์ž๋ฅผ ์ œ๊ณตํ•˜๋ฉด, ํ•ด๋‹น ์ธ์ž๊ฐ€ CMD๋กœ ์ง€์ •ํ•œ ๋ช…๋ น์–ด๋ฅผ ๋ฎ์–ด์“ด๋‹ค
  • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ์‹คํ–‰ํ•  ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง„์ž…์ ์„ ์ง€์ •ํ•˜๋Š” ์šฉ๋„๋กœ ํ™œ์šฉ 
  • ๋ช…๋ น์–ด๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
ENTRYPOINT
  • ENTRYPOINT ๋ช…๋ น์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ํ•ญ์ƒ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ์ง€์ •
  • docker run ๋ช…๋ น์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ถ”๊ฐ€ ์ธ์ž๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†์Œ.
  • ์ถ”๊ฐ€ ์ธ์ž๋Š” ENTRYPOINT๋กœ ์ง€์ •ํ•œ ๋ช…๋ น์–ด์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ์‹คํ–‰ ํŒŒ์ผ ๋˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • CMD์™€ ๋‹ฌ๋ฆฌ ENTRYPOINT๋Š” ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ์…ธ์— ์˜ํ•ด ์‹คํ–‰

 

๊ฐ„๋‹จํžˆ ๋งํ•ด, CMD์™€ ENTRYPOINT ๋ชจ๋‘ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ฐจ์ด์ ์€ CMD๋Š” ์ถ”๊ฐ€ ์ธ์ž๋กœ ๋ช…๋ น์–ด๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ, ENTRYPOINT๋กœ ์„ค์ •ํ•œ ๋ช…๋ น์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ์ถ”๊ฐ€ ์ธ์ž๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ์ด ๋‘ ๋ช…๋ น์–ด๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์กฐ์ •ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

CMD vs ENTRYPOINT ์‚ฌ์šฉ ์˜ˆ์ œ

 

ENTRYPOINT์™€ CMD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ํฌํŠธ๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ˆ์ œ๋กœ CMD์™€ ENTRYPOINT์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

 

CMD
FROM openjdk:11-jdk-slim

WORKDIR /app

COPY ./aws-v3-0.0.3.jar ./application.jar

ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "application.jar"]

CMD ["--server.port=3000"]
  • CMD ๋ช…๋ น์œผ๋กœ ์„œ๋ฒ„ ํฌํŠธ๋ฅผ 3000๋ฒˆ์œผ๋กœ ์ง€์ •
  • CMD ๋กœ ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋Š” docker run ๋ช…๋ น ์‹œ ์ถ”๊ฐ€ ์ธ์ž๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Œ

 

docker build -t java-server .
docker run -dit -p 8080:3000 java-server

  • ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋ฒ„ ํฌํŠธ๊ฐ€ 3000๋ฒˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ํฌํŠธํฌ์›Œ๋”ฉ์„ 8080:3000์œผ๋กœ ํ•˜๊ณ , localhost:8080์œผ๋กœ ์ ‘์†ํ•˜๋ฉด ์ •์ƒ ์ ‘์† ๊ฐ€๋Šฅ

 

docker run -dit -p 8080:5000 java-server --server.port=5000

 

  • ๋˜ํ•œ ๋„์ปคํŒŒ์ผ์—์„œ ์„œ๋ฒ„ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ CMD ๋ช…๋ น์œผ๋กœ ์ง€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— docker run ๋ช…๋ น ์‹œ ์„œ๋ฒ„ํฌํŠธ๋ฅผ ์ƒˆ๋กœ ์ง€์ •ํ•˜๋Š” ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
  • docker run ๋ช…๋ น ์‹œ --server.port=5000์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ํฌํŠธํฌ์›Œ๋”ฉ ์—ญ์‹œ 8080:5000์œผ๋กœ ํ•˜๋ฉด ์ •์ƒ ์ ‘์† ๊ฐ€๋Šฅ

 

 

ENTRYPOINT
FROM openjdk:11-jdk-slim

WORKDIR /app

COPY ./aws-v3-0.0.3.jar ./application.jar

ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "application.jar", "--server.port=3000"]
  • ENTRYPOINT ์—์„œ ์„œ๋ฒ„ํฌํŠธ๋ฅผ 3000๋ฒˆ์œผ๋กœ ์ง€์ •
  • ENTRYPOINT๋กœ ์ง€์ •ํ•œ ๋ช…๋ น์€ docker run ์‹œ ๋ช…๋ น์œผ๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†์Œ
docker build -t java-server .
docker run -dit -p 8080:3000 java-server

  • ํฌํŠธํฌ์›Œ๋”ฉ์„ 8080:3000์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์ •์ƒ ์ ‘์†

 

docker run -dit -p 8080:5000 java-server --server.port = 5000

  • docker run ๋ช…๋ น ์‹œ ์„œ๋ฒ„ ํฌํŠธ๋ฅผ 5000์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํฌํŠธํฌ์›Œ๋”ฉ ์—ญ์‹œ 8080:5000์œผ๋กœ ์„ค์ •ํ–ˆ์ง€๋งŒ ์ ‘์† ๋ถˆ๊ฐ€
  • ENTRYPOINT๋กœ ์ง€์ •ํ•œ ๋ช…๋ น์€ docker run ๋ช…๋ น์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ๋ถˆ๊ฐ€๋Šฅ

 

๋•Œ๋ฌธ์— docker run ๋ช…๋ น ์‹œ ์˜ต์…˜์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ์€ ํ•ญ๋ชฉ์˜ ๊ฒฝ์šฐ CMD๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
๋””ํดํŠธ๋กœ ๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ•ญ๋ชฉ์€ ENTRYPOINT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
๋ฐ˜์‘ํ˜•

'๐Ÿ’ป Programming > Docker & Kubernetes' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Docker] (12) ๊นƒํ—ˆ๋ธŒ๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ | Packages Container Registry  (0) 2023.08.31
[Docker] (11) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ vscode ์—ฐ๋™ํ•˜๊ธฐ | ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐœ๋ฐœ  (2) 2023.08.25
[Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•  (0) 2023.08.21
[Docker] (8) ๋„์ปค commit(์ปค๋ฐ‹) & push(ํ‘ธ์‹œ) - ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ  ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ  (0) 2023.08.21
[Docker] (7) ๋„์ปค volume(๋ณผ๋ฅจ) ์˜ต์…˜ - ์ปจํ…Œ์ด๋„ˆ ํด๋”์™€ ํ˜ธ์ŠคํŠธ ํด๋” ์—ฐ๊ฒฐํ•˜๊ธฐ  (0) 2023.08.21
'๐Ÿ’ป Programming/Docker & Kubernetes' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Docker] (12) ๊นƒํ—ˆ๋ธŒ๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ | Packages Container Registry
  • [Docker] (11) ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ vscode ์—ฐ๋™ํ•˜๊ธฐ | ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐœ๋ฐœ
  • [Docker] (9) Dockerfile(๋„์ปคํŒŒ์ผ) - ์Šค๋งˆํŠธํ•˜๊ฒŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•
  • [Docker] (8) ๋„์ปค commit(์ปค๋ฐ‹) & push(ํ‘ธ์‹œ) - ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ๋„์ปค ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ  ๋ ˆํผ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œ
๋ญ…์ฆค
๋ญ…์ฆค
AI ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
    ๋ฐ˜์‘ํ˜•
  • ๋ญ…์ฆค
    CV DOODLE
    ๋ญ…์ฆค
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • โœจ About Me
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (206) N
      • ๐Ÿ“– Fundamentals (33)
        • Computer Vision (9)
        • 3D vision & Graphics (6)
        • AI & ML (15)
        • NLP (2)
        • etc. (1)
      • ๐Ÿ› Research (71) N
        • Deep Learning (7)
        • Image Classification (2)
        • Detection • Segmentation (17)
        • OCR (7)
        • Multi-modal (4)
        • Image•Video Generation (11)
        • 3D Vision (4) N
        • Material • Texture Recognit.. (8)
        • NLP • LLM (11)
        • etc. (0)
      • ๐Ÿ› ๏ธ Engineering (7)
        • Distributed Training (4)
        • AI & ML ์ธ์‚ฌ์ดํŠธ (3)
      • ๐Ÿ’ป Programming (86)
        • Python (18)
        • Computer Vision (12)
        • LLM (4)
        • AI & ML (18)
        • Database (3)
        • Apache Airflow (6)
        • Docker & Kubernetes (14)
        • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (4)
        • C++ (1)
        • etc. (6)
      • ๐Ÿ’ฌ ETC (3)
        • ์ฑ… ๋ฆฌ๋ทฐ (3)
  • ๋งํฌ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Computer Vision
    pandas
    segmentation
    ์ปดํ“จํ„ฐ๋น„์ „
    3D Vision
    ํ”„๋กฌํ”„ํŠธ์—”์ง€๋‹ˆ์–ด๋ง
    ๋„์ปค
    ๊ฐ์ฒด ๊ฒ€์ถœ
    ๋”ฅ๋Ÿฌ๋‹
    Python
    ํŒŒ์ด์ฌ
    ๊ฐ์ฒด๊ฒ€์ถœ
    ChatGPT
    OpenCV
    material recognition
    ml
    diffusion
    AI
    Text recognition
    deep learning
    object detection
    multi-modal
    OpenAI
    airflow
    generative ai
    LLM
    OCR
    pytorch
    nlp
    CNN
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
๋ญ…์ฆค
[Docker] (10) Dockerfile ๋นŒ๋“œ ์˜ˆ์‹œ | ENTRYPOINT ์™€ CMD์˜ ์ฐจ์ด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”