## Docker-compose λž€? 볡수의 μ»¨ν…Œμ΄λ„ˆμ— λŒ€ν•œ λͺ…λ Ήμ–΄λ₯Ό ν•˜λ‚˜μ˜ 파일둜 κ΄€λ¦¬ν•˜λŠ” 도ꡬ. 도컀 μ—”μ§„κ³Ό λ³„κ°œμ˜ μ†Œν”„νŠΈμ›¨μ–΄μ΄λ‚˜ 도컀 λ°μŠ€ν¬ν†±μ—λŠ” 기본적으둜 μ„€μΉ˜λ˜μ–΄ 있음. ## μ„€μΉ˜ ``` pip3 install docker-compose ``` ## CLI ν˜•μ‹ ``` docker-compose -f [파일 이름] [λͺ…λ Ήμ–΄] [μ˜΅μ…˜] ``` ## Docker-compose μ£Όμš” λͺ…λ Ή |λͺ…λ Ή|λ‚΄μš©| |-|-| |`up`|docker-compose둜 `docker-compose.yaml` 을 읽고 Dockerfile λ˜λŠ” 이미지 이름을 톡해 μ»¨ν…Œμ΄λ„ˆ 생성 > 싀행함.| |`down`|μ»¨ν…Œμ΄λ„ˆμ™€ λ„€νŠΈμ›Œν¬ μ •μ§€ 및 μ‚­μ œ| |`stop`|μ»¨ν…Œμ΄λ„ˆμ™€ λ„€νŠΈμ›Œν¬ μ •μ§€| ## `Docker-compose.yaml` μ£Όμš” μ •μ˜ |μ •μ˜|docker run κΈ°μ€€|λ‚΄μš©| |-|-|-| | image | 이미지 인자 | μ‚¬μš©ν•  Docker 이미지 μ§€μ • | | ports | `-p` λ˜λŠ” `--publish` | 호슀트 및 μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ 포트 λ§€ν•‘ μ„€μ • | | volumes | `-v` λ˜λŠ” `--volume` | 호슀트 및 μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ λ³Όλ₯¨ λ§€ν•‘ μ„€μ • | | environment | `-e` λ˜λŠ” `--env` | ν™˜κ²½ λ³€μˆ˜ μ„€μ • | | networks | `--net` | μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ λ„€νŠΈμ›Œν¬ μ—°κ²° μ„€μ • | | depends_on | - | μ„œλΉ„μŠ€ κ°„μ˜ 쒅속성 μ„€μ • | | restart | `--restart` | μ»¨ν…Œμ΄λ„ˆμ˜ μž¬μ‹œμž‘ μ •μ±… μ„€μ • | | build | - | Dockerfile λ˜λŠ” μ»¨ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•œ 이미지 λΉŒλ“œ μ„€μ • | | command | λͺ…λ Ή 인자 | μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ μ‹œ μ‹€ν–‰ν•  λͺ…λ Ή λ˜λŠ” 슀크립트 μ„€μ • | | links | `--link` | λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ— λŒ€ν•œ 링크 μ„€μ • | ### μ˜ˆμ‹œ #### 일반적인 ν˜•μ‹ ``` version: '1' services: μ»¨ν…Œμ΄λ„ˆ_이름1: image: 이미지_이름 networks: - λ„€νŠΈμ›Œν¬_이름 ports: - "포트_μ„€μ •" μ»¨ν…Œμ΄λ„ˆ_이름2: image: 이미지_이름 networks: λ„€νŠΈμ›Œν¬_이름1: volumes: λ³Όλ₯¨_이름1: λ³Όλ₯¨_이름2: ``` #### MySQL > SpringBoot μ˜ˆμ‹œ ```yaml # springedu2 ν”„λ‘œμ νŠΈ 폴더에 μœ„μΉ˜ version: "1" services: mysqledu: image: mysql container_name: mysqledu networks: - edunet volumes: - mysqleduvol:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: edudb MYSQL_USER: jdbctest MYSQL_PASSWORD: jdbctest ports: - 3306:3306 springedu2: depends_on: - mysqledu container_name: springedu2 build: context: ./ dockerfile: Dockerfile networks: - edunet ports: - 8088:8088 restart: on-failure networks: edunet: volumes: mysqleduvol: ``` ## μ‚¬μš© μ˜ˆμ‹œ ### Docker compose 생λͺ… μ£ΌκΈ° #### Docker compose 생성 ``` docker-compose -f [파일 이름] up -d ``` ``` docker-compose up -d ``` #### Docker compose μ‚­μ œ ``` docker-compose -f [파일 이름] down [μ˜΅μ…˜] ``` ``` docker-compose down --rmi all ``` - `--rmi all` ν•΄λ‹Ή μ„œλΉ„μŠ€μ˜ 이미지λ₯Ό λͺ¨λ‘ μ‚­μ œν•˜λŠ” μ˜΅μ…˜