개발이 좋아서/Docker가 좋아서

Docker Compose를 활용해 컨테이너 관리하기

zoaseo 2025. 1. 23. 15:27

- Docker Compose - 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.

 

- compose.yml 파일을 만들어 작성한다.

services:
	websever:
		container_name: webserver
		image: nginx
		ports: 
			- 80:80
$ docker compose up    # 포그라운드에서 실행
$ docker compose up -d # 백그라운드에서 실행
# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다. 
$ docker compose ps 

# compose.yml에 정의된 모든 컨테이너를 보여준다.
$ docker compose ps -a

- 컨테이너를 확인할 수 있다.

 

# compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력한다.
$ docker compose logs

- 로그 확인하기

 

$ docker compose up --build # 포그라운드에서 실행
$ docker compose up --build -d # 백그라운드에서 실행
  • docker compose up : 이미지가 없을 때만 빌드해서 컨테이너를 실행시킨다. 이미지가 이미 존재하는 경우 이미지를 빌드하지 않고 컨테이너를 실행시킨다.
  • docker compose up --build : 이미지가 있건 없건 무조건 빌드를 다시해서 컨테이너를 실행시킨다.

 

$ docker compose pull

- compose.yml에서 정의된 이미지를 다운받거나 업데이트한다.

 

$ docker compose down

- 컨테이너 종료

 

 

Docker Compose로 Spring Boot 실행시키기

@RestController
public class AppController {
  @GetMapping("/")
  public String home() {
    return "Hello, World!";
  }
}

- 간단한 코드 작성

 

FROM openjdk:17-jdk

COPY build/libs/*SNAPSHOT.jar /app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]

- Dockerfile 작성

 

$ ./gradlew clean build

- 빌드를 해야 jar를 컨테이너에 띄울 수 있다. 

 

services:
  my-server:
    build: .
    ports:
      - 8080:8080

- compose.yml 작성

- build: . : compose.yml이 존재하는 디렉토리 (.) 에 있는 Dockerfile로 이미지를 생성해 컨테이너를 띄우겠다는 의미이다.

 

$ docker compose up -d --build

- compose 파일 실행시키기

 

$ docker compose ps
$ docker ps

- 실행 컨테이너 보기

- localhost:8080 들어가보기

 

$ docker compose down

- compose로 실행된 컨테이너 삭제

 

Docker CLI <ㅡ> Docker Compose 쉽게 작성하기

- Docker CLI ㅡ> Docker Compose : https://www.composerize.com/

- Docker Compose ㅡ> Docker CLI : https://www.decomposerize.com/