Docker Copmose란?
여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.
(여러 개의 컨테이너를 관리하는 데 용이 & 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음)
Docker Compose를 활용해 1개의 컨테이너 관리하기
[실습1] Docker Compose로 백엔드(Spring Boot) 실행시키기
인텔리제이에서 코드 작성 후
package com.example.inflearn;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AppController {
@GetMapping("/v1")
public String home() {
return "Hello, 인프런!";
}
}
Dockerfile 코드 작성하기
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
Spring Boot 프로젝트 빌드하기
./gradlew clean build
compose 파일(compose.yml) 코드 작성하기
services:
my-server:
build: .
ports:
- 8080:8080
*build: . : compose.yml이 존재하는 디렉토리(.)에 있는 Dockerfile로 이미지를 생성해 컨테이너를 띄우겠다는 의미이다.
*참고) compose를 작성하지 않고 Docker CLI로 실행시킬 때 (compose를 사용하면 아래 명령어는 미사용)
docker build -t hello-server .
docker run -d -p 8080:8080 hello-server
compose 파일 실행시키기
docker compose up -d --build
compose 실행 현황 보기
docker compose ps
docker ps
크롬에서 http://localhost:8080/v1 접속해 보기
compose로 실행된 컨테이너 삭제
docker compose down
[실습2] Docker Compose로 MySQL 실행시키기
✅ (기존) Docker CLI로 MySQL 실행시킬 때
docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
✅ Docker Compose로 MySQL 실행시키기
compose 파일(compose.yml) 코드 작성하기
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
*environment: ... : CLI에서 -e MYSQL_ROOT_PASSWORD=password 역할과 동일하다.
*volumes: ... : CLI에서 -v {호스트 경로}:/var/lib/mysql 역할과 동일하다.
compose 파일 실행시키기
docker compose up -d
compose 실행 현황 보기
docker compose ps
docker ps
잘 작동하는지 Spring Boot, DBeaver 등에 연결시켜보기
volume의 경로에 데이터가 저장되고 있는 지 확인하기
compose로 실행된 컨테이너 삭제
docker compose down
▶ 지금까지의 예제를 보면 Docker CLI로 작성할 수 있는 명령어는 전부 compose.yml 파일로 옮길 수 있다. 반대로 compose.yml에 작성한 모든 값은 Docker CLI로 나타낼 수 있다. 이를 편하게 변환해주는 사이트가 존재한다.
✅ Docker CLI → compose.yml로 변환
✅ compose.yml → Docker CLI로 변환
'개발 > 강의' 카테고리의 다른 글
인프런 : Docker 6 - AWS ECR (0) | 2025.04.14 |
---|---|
인프런 : Docker Copmose 5 (0) | 2025.04.14 |
인프런 : Dockerfile 3 (0) | 2025.04.11 |
인프런 : Docker Volume 2 (0) | 2025.04.11 |
인프런 : Docker 1 (0) | 2025.04.10 |