개발/강의

인프런 : Docker Copmose 4

EJ EJ 2025. 4. 12. 17:28

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로 변환

Composerize

 

 compose.yml → Docker CLI로 변환

Decomposerize

'개발 > 강의' 카테고리의 다른 글

인프런 : 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