[Docker๐Ÿณ] Docker Compose

Jeong SeongYunยท2022๋…„ 10์›” 19์ผ
0

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
8/10
post-thumbnail

โ— Docker Compose

์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ์•„์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํˆด์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์›น์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ํ”„๋ก ํŠธ, ๋ฐฑ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ๋“ฑ ๋งŽ์€ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ฃ . ์ด๋“ค์„ ๋ชจ๋‘ docker ์ปจ๋ฐ์ด๋„ˆ๋กœ ๋งŒ๋“ค๊ณ  ์„œ๋กœ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋“ค์„ ํ•œ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Docker Compose๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋ฌผ๋ก  ๋‚˜์ค‘์— ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๊ฐ€ ๋”๋”์šฑ ์ปค์ง€๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ์ด๊ฑด ์ผ๋‹จ Docker๋ฅผ ๋‹ค๋ฃฌ ๋‹ค์Œ์— ์–˜๊ธฐํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

โ— ์ž‘์„ฑ๋ฒ•

YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ํŒŒ์ผ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ค์ •์„ ๋‹ด์•„๋‘๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

YAML ํŒŒ์ผ์€ ์ œ ๋ธ”๋กœ๊ทธ์˜ ์งค๋ง‰ ํฌ์ŠคํŒ…์—์„œ ํ•œ๋ฒˆ ๋‹ค๋ค˜๋˜ ์ ์ด ์žˆ๋˜ ๋‚ด์šฉ์ด์ฃ ? ์‰ฝ๊ฒŒ ๋งํ•ด, ๋ฐ์ดํ„ฐ์˜ ์ •์˜๊ฐ€ ์šฉ์ดํ•˜๊ณ , Dictionary๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๋ฝ‘์•„ ์“ธ ์ˆ˜ ์žˆ์–ด config ํŒŒ์ผ๊ฐ™์€ ๊ฑฐ์— ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

YAML

๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ket์™€ value ๊ตฌ๋ถ„ (๋ณดํ†ต 2์นธ)
--- : ๋ฌธ์„œ ์ž‘์„ฑ ์‹œ์ž‘
... : ๋ฌธ์„œ ์ž‘์„ฑ ์ข…๋ฃŒ
- : ๋ฆฌ์ŠคํŠธ

์˜ˆ์‹œ
keyno1 : 
  valueno1 : 
    - valuelist : 
      - no1
      - no2
    - valuelist2 : 
      - no1
      - no2

์œ„์™€ ๊ฐ™์€ format์œผ๋กœ ์ž‘์„ฑ๋œ docker compose ํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค

  1. version
  2. services
  3. volumes
  4. networks

version

Docker Compose ํŒŒ์ผ์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต์€ "3"์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

services

์‚ฌ์šฉ๋  ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๊ณผ ์‚ฌ์šฉํ•  ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋“ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์žˆ์œผ๋ฉฐ, ์˜ต์…˜์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜์— ์˜ˆ์‹œ์— ๊ฐ™์ด ์ ์–ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค!

์˜ˆ์‹œ
services:
  A:                ## A๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ฆ
    images: mysql:5.7
    
    restart: always ## ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ ์ข…๋ฃŒ ๋์„ ๋•Œ ํ•ญ์ƒ ์žฌ์‹œ์ž‘ํ•˜๋ผ๋Š” ๋ช…๋ น์–ด
    
	volumes:        ## docker run์˜ -v์™€ ๊ฐ™์€ ์—ญํ• 
      - hostPCํŒŒ์ผ:Container๋‚ด๋ถ€์˜ํด๋” 
      
    environment:    ## dockerfile์˜ ENV ์˜ต์…˜๊ณผ ๊ฐ™์€ ์—ญํ• 
      - MYSQL_DATABASE=mydb
      
    env_file:       ## environment ์˜ต์…˜ ๋Œ€์‹  ๋‚ด๋ถ€์— ์ •๋ณด๋ฅผ ์ ์–ด๋‘” ํŒŒ์ผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ
      - file.txt
      
    ports:          ## docker run์˜ -p์™€ ๊ฐ™์€ ์—ญํ• 
      - "8888:80"  
      
    links:          ## Compose ๋‚ด๋ถ€์˜ A์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ Compose ๋‚ด๋ถ€์˜ B์ปจํ…Œ์ด๋„ˆ๋ฅผ 
    				   ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ (๊ธฐ์กด๊ณผ ๋™์ผ)
      - "B:nickname"
    
    container_name: ## Container์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
    
    depends_on: 	## ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
      - B			   ex) A๊ฐ€ B๋ฅผ ํ•„์š”ํ•  ๋•Œ, B๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜๊ณ  A๋ฅผ ์ƒ์„ฑํ•จ
    

โ— ์‹คํ–‰

์˜ˆ์‹œ ํŒŒ์ผ ์ž‘์„ฑ

vi ํŽธ์ง‘๊ธฐ๋ฅผ ์ด์šฉํ•ด ์œ„์™€ ๊ฐ™์ด yml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

์‹คํ–‰

docker-compose up -d : docker compose๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์ง€

docker-compose stop : docker compose๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์‚ญ์ œ

docker-compose down : docker-compose up ๋ช…๋ น์–ด๋กœ ์ƒ๊ธฐ๋Š” container๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.


โž• dockerignore
git์„ ํ†ตํ•ด ์ž‘์—…ํ•ด๋ณด์‹  ๋ถ„๋“ค์€ ํ•œ๋ฒˆ์ฏค์€ ๋ณด์…จ์„ .gitingore์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Container๋ฅผ ๋งŒ๋“ค๊ณ  ๋„ฃ๋‹ค๋ณด๋ฉด COPY ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด A ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ B ํด๋”๋กœ ๋ณต์‚ฌํ•˜๋Š”๋ฐ, A ํด๋”์˜ ์“ธ๋ฐ์—†๋Š” ํŒŒ์ผ๊นŒ์ง€ ์ด๋™์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

๊ทธ ์˜ˆ์™ธ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ํŒŒ์ผ์ด ๋ฐ”๋กœ .dockerignore ์ž…๋‹ˆ๋‹ค!

*/A* : ์–ด๋–ค ํ•˜๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ์ƒ์ด๋“  flask๋กœ ์‹œ์ž‘ํ•˜๋Š” ํด๋”๋‚˜ ํŒŒ์ผ์„ ๋ชจ๋‘ ์ œ์™ธํ•ด๋ผ
A? : A๋’ค์˜ ํ•œ๊ธ€์ž๋งŒ ๋” ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํด๋”๋‚˜ ํŒŒ์ผ์„ ์ œ์™ธํ•ด๋ผ
!A : ์ œ์™ธ์กฐ๊ฑด์—์„œ ์˜ˆ์™ธ๋ฅผ ๋‘ก๋‹ˆ๋‹ค. (A๋Š” ์ œ์™ธํ•˜๋Š”๋ฐ A๋Š” ์ œ์™ธํ•˜์ง€๋งˆ!)

profile
๋ฌผ์–ด๋ณด๋ฉด ๋Œ€๋‹ตํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์Ÿ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€