Docker
๐Ÿ™ˆ

Docker

Created
Feb 22, 2024 09:01 AM
Last edited time
Last updated April 8, 2024
Tags
CS
Language
URL

Intro::

Docker ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž.
ย 

๋„์ปค๋ž€ ?

๋„์ปค(Docker)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆํ™”ํ•ด์„œ ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ์‹คํ–‰์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์ด๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(์ฝ”๋“œ, ๋Ÿฐํƒ€์ž„, ์‹œ์Šคํ…œ ๋„๊ตฌ, ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)์„ ํฌํ•จํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋‹จ์œ„๋กœ, ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋„ ์ผ๊ด€๋˜๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ OS์˜ ์ปค๋„์„ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋งŒ์•ฝ ํ˜ธ์ŠคํŠธ OS๊ฐ€ ๋ฆฌ๋ˆ…์Šค๋ผ๋ฉด, ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ ๊ฐ„์—๋Š” OS๋ฅผ '๋ณ€๊ฒฝ'ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” OS(์˜ˆ: ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฆฌ๋ˆ…์Šค์ด๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์œˆ๋„์šฐ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ)๋กœ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ Linux ์ปจํ…Œ์ด๋„ˆ๋ฅผ Windows์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋ถ€ ํ˜ธํ™˜์„ฑ ๊ณ„์ธต์„ ํ†ตํ•ด ๋‹ค๋ฅธ OS์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋“ค๋„ ์žˆ๋‹ค.

๋„์ปค์˜ ์žฅ์ 

  1. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์ผ๊ด€์„ฑ: ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, "๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž˜ ๋˜๋Š”๋ฐ์š”" ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ๋ฐฐํฌ ์†๋„ ํ–ฅ์ƒ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์ข…์†์„ฑ์„ ์ปจํ…Œ์ด๋„ˆ์— ํŒจํ‚ค์ง•ํ•˜๋ฉด, ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ„์†Œํ™”๋˜๊ณ  ์ž๋™ํ™”ํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐฐํฌ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.
  1. ์ด์‹์„ฑ ํ–ฅ์ƒ: ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋””์„œ๋“  ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด. ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ, macOS ์ƒ๊ด€์—†์ด, ์˜จํ”„๋ ˆ๋ฏธ์Šค๋‚˜ ํด๋ผ์šฐ๋“œ ์ƒ๊ด€์—†์ด ์‹คํ–‰๊ฐ€๋Šฅํ•˜๋‹ค.
  1. ๋ถ„๋ฆฌ ๋ฐ ๊ด€๋ฆฌ ์šฉ์ด: ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋น„์Šค๋ณ„๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์™€ ์ž˜ ๋งž๋Š”๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค.
  1. ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ: ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€๋ฒผ์›Œ์„œ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ€์ƒ ๋จธ์‹ (VM)์— ๋น„ํ•ด ์ ์€ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ

  • ์ด๋ฏธ์ง€(Image): ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ๋ถˆ๋ณ€์˜ ํ…œํ”Œ๋ฆฟ. ์ด๋ฏธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ(Container): ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ์‹ค์ œ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ. ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ๊ณผ ๊ฒฉ๋ฆฌ๋ผ ์žˆ๋‹ค.
  • ๋„์ปค ๋ฐ๋ชฌ(Docker Daemon): ๋„์ปค ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค. ์‚ฌ์šฉ์ž๋‚˜ ๋„์ปค API์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋„์ปค ํด๋ผ์ด์–ธํŠธ(Docker Client): ์‚ฌ์šฉ์ž๊ฐ€ ๋„์ปค ๋ฐ๋ชฌ๊ณผ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค. ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ๋„์ปค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด ๋ช…๋ น์–ด๋ฅผ ๋„์ปค ๋ฐ๋ชฌ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
ย 

Dockerfile

FROM python:3.9-slim # ์‚ฌ์šฉํ•  BaseImage WORKDIR /app # ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ COPY main.py . # ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ docker ์ด๋ฏธ์ง€์— ๋ณต์‚ฌ COPY ./requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด CMD ["python3", "main.py"] # ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ฌ๋ผ๊ฐˆ๋•Œ ์‹คํ–‰

Build

docker build -t docker-ex:1.0 .
ย 

Run

docker run --name {container-name} -d {image:tag}
ย 

ENTRYPOINT

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰ํ•ด์•ผ ํ•  ๊ธฐ๋ณธ ๋ช…๋ น(๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ "๋ถˆ๋ณ€"ํ•œ ๋ถ€๋ถ„์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

CMD

ENTRYPOINT์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ธ์ž๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ENTRYPOINT๊ฐ€ ์—†์„ ๋•Œ ์‹คํ–‰ํ•  ๊ธฐ๋ณธ ๋ช…๋ น์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CMD๋Š” docker run ๋ช…๋ น์–ด์— ์ถ”๊ฐ€์ ์ธ ์ธ์ž๊ฐ€ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ์— ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker compose

1. ๋„์ปค ํŒŒ์ผ ์ž‘์„ฑ

๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์Šคํ”„๋ง, ํŒŒ์ด์ฌ, MySQL)์— ๋Œ€ํ•œ ๋„์ปค ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ํŒŒ์ผ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ง€์‹œ์‚ฌํ•ญ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • MySQL ๋„์ปค ํŒŒ์ผ: MySQL์€ ์ด๋ฏธ ๊ณต์‹ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ๋„์ปค ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ •(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„, ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ)์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„์ปค ํŒŒ์ผ: Java์™€ Maven(๋˜๋Š” Gradle)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„์ปค ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„์ปค ํŒŒ์ผ: ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„์ปค ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

2. ๋„์ปค ์ปดํฌ์ฆˆ ํŒŒ์ผ ์ž‘์„ฑ

๋„์ปค ์ปดํฌ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์‹œ์— ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker-compose.yml ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์—ฌ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ทธ๋ฆฌ๊ณ  MySQL ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
version: '3' services: mysql: image: mysql:latest container_name: mysql environment: MYSQL_DATABASE: 'db' MYSQL_USER: 'user' MYSQL_PASSWORD: '1234' MYSQL_ROOT_PASSWORD: 'root1234' TZ: 'Asia/Seoul' MYSQL_CHARSET: utf8mb4 MYSQL_COLLATION: utf8mb4_unicode_ci ports: - "3306:3306" volumes: - db-data:/var/lib/mysql - ./my.cnf:/etc/mysql/conf.d/custom.cnf spring-app: build: context: ./newsHabit dockerfile: dockerfile restart: on-failure ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/news_habit?useUnicode=true&characterEncoding=utf8 SPRING_DATASOURCE_USERNAME: "user" SPRING_DATASOURCE_PASSWORD: "1234" TZ: "Asia/Seoul" depends_on: - mysql python-app: build: context: ./crawling dockerfile: Dockerfile environment: TZ: "Asia/Seoul" command: python3 ./src/main.py volumes: - ./crontab:/crawling/crontab depends_on: - mysql volumes: db-data:
#my.cnf [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4

3. ๋„คํŠธ์›Œํฌ ์„ค์ •

๋„์ปค ์ปดํฌ์ฆˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ๋ฐฐ์น˜ํ•˜์—ฌ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํŒŒ์ด์ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ mysql ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ

๋„์ปค ์ปดํฌ์ฆˆ ํŒŒ์ผ์ด ์ค€๋น„๋˜๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
docker-compose up --build
์ด ๋ช…๋ น์–ด๋Š” ์ •์˜๋œ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. --build ์˜ต์…˜์€ ์ด๋ฏธ์ง€๊ฐ€ ์ตœ์‹  ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
ย 

DB ์ €์žฅ ์‹œ ํ•œ๊ธ€ ๊นจ์ง ํ˜„์ƒ

๐Ÿ’ก
my.cnf ๋กœ ํ•ด๊ฒฐ
ย 

ec2 ์ด๋ฏธ์ง€ ๋นŒ๋“œ ํ˜ธํ™˜ ๋ฌธ์ œ

docker build --platform linux/amd64 -t aoleejohn/crawl:latest .// ์™€๊ฐ™์ด ๋นŒ๋“œํ•ด์•ผํ•œ๋‹ค.
ย 

References::

๋„์ปค ํŒŒ์ผ ์ž‘์„ฑ ๊ธฐ๋ณธ ์˜ˆ์ œ(ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ)
ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋„์ปค๋กœ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Dockerfile ์ž‘์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํ•œ Python ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dockerfile ์ž‘์„ฑ ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃจ๋ฉด์„œ ๋„์ปค ํŒŒ์ผ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Dockerfile ์ž‘์„ฑ ๋ฐฉ๋ฒ• ์˜ˆ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋œ ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. /project-directory /utils util_file.py main.py Dockerfile requirements.txt ์œ„์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋„์ปค ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Dockerfile ์˜ˆ์‹œ ์Šค๋‹ˆํŽซ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. # ์‚ฌ์šฉํ•  Base Image ์„ ํƒ FROM python:3.9-slim # ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • WORKDIR /app # ํ•„์š”ํ•œ ํŒŒ์ผ..
๋„์ปค ํŒŒ์ผ ์ž‘์„ฑ ๊ธฐ๋ณธ ์˜ˆ์ œ(ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ)
Docker - ๋„์ปค์— Spring Boot(Gradle) ๊ตฌ์ถ•ํ•˜๊ธฐ
์šฐ๋ฆฌ๊ฐ€ ๋„์ปค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠน์ •ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋ฅผ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋”ฐ๋ฅธ ์„ค์ •์„ ๋งž์ถฐ์ค˜์•ผ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ๋‹ค๋ฅธ ์›น์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ ๋งˆ๋‹ค ์„ค์ •์„ ํ•ด์•ผํ•˜๋ฉฐ, ์„œ๋ฒ„๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์„ค์ •์„ํ•ด์ค˜์•ผ ํ•˜์—ฌ ๋งŽ์€ ์ž์› ๋‚จ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ์˜ ์ž‘์—…์„ ๊ทœ๊ฒฉํ™”ํ•˜์—ฌ ์ •์˜๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. #๏ธโƒฃ ๋„์ปค ์‹คํ–‰ ์ˆœ์„œ 1. spring boot ๊ฐœ๋ฐœ 2. jar ํŒŒ์ผ ์ƒ์„ฑ 3. dockerfile ๋งŒ๋“ค๊ธฐ 4. docker image์ƒ์„ฑ 5. docker container์‹คํ–‰ ๋จผ์ € ์‹ค์Šต์„ ํ•˜๊ธฐ์•ž์„œ ๋„์ปค๊ฐ€ ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ์„ค์น˜๋ฒ• 1๏ธโƒฃSpring Boot ๊ฐœ๋ฐœ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋„์ปค๋ฅผ ์ค‘์ ์œผ๋กœ ํ•˜๋Š” ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— spring ํ”„๋กœ์ ํŠธ๋Š” ๊ฐ„๋‹จ..
Docker - ๋„์ปค์— Spring Boot(Gradle) ๊ตฌ์ถ•ํ•˜๊ธฐ
[Docker] ์ด๋ฏธ์ง€๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์žฌ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•
๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์žฌ๋นŒ๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค. 1. ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ด๋ฏธ์ง€ ์‚ญ์ œ ์šฐ์„  ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker stop [container_name] docker rm [container_name] ์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. docker rmi [image_name] 2. ์บ์‹œ๋œ ๋นŒ๋“œ ์‚ญ์ œ ์ด์ „ ๋นŒ๋“œ์—์„œ ์บ์‹œ๊ฐ€ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋นŒ๋“œ ์บ์‹œ๋ฅผ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์บ์‹œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker builder prune 3. ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ชจ๋“  ์ด์ „ ์ด๋ฏธ์ง€ ๋ฐ ์บ์‹œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น..
[Docker] ์ด๋ฏธ์ง€๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์žฌ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

Loading Comments...