Docker Compose

Kooks·2025년 11월 4일

Docker

목록 보기
5/5
post-thumbnail

Docker Compose

  • 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 해 준다.
  • 여러 개의 컨테이너를 관리하는데 용이
  • 복잡한 명령어로 실행시키던걸 간소화시킬 수 있음

Docker Compose 흐름(Nginx)

Docker CLI로 컨테이너 실행

$ docker run --name webserver -d -p 80:80 nginx

Docker Compose로 컨테이너 실행

  1. compose.yml 파일 작성
services:
 my-web-server:
  container_name: webserever
  image: nginx
  ports:
   - 80:80
  • services: my-web-server -> Docker Compose에서 하나의 컨테이너를 서비스(service)라 부른다. 이 옵션은 서비스에 이름을 붙이는 기능이다.
  • container_name: web-server -> 컨테이너를 뛰울 때 붙이는 별칭이다. CLI에서 --name web-server와 동일하다.
  • image: nginx -> 컨테이너를 실행시킬 때 어떤 이미지를 사용할지 정의하는 명령어다. docker run [이미지명]과 동일
  • ports -> 포트 매핑은 어떻게 할지를 설정하는 옵션이다. CLI -p 80:80과 동일하다.
  1. compose 파일 실행시키기
$ docker compose up -d
  1. compose 실행 현황 보기
$ docker compose ps
$ docker ps
  1. localhost:80 확인
  2. compose로 실행된 컨테이너 삭제
$ docker compose down

Docker Compose로 MySQL 실행

Docker CLI 로 컨테이너 실행

$ docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v /User/docker/docker-mysql:/var/lib/mysql -d mysql

Docker Compose로 MySQL 실행

1. compose 파일 작성

service:
 my-db:
  image: mysql
  enviroment:
   MYSQL_ROOT_PASSWORD: pwd123
  volumnes:
   - ./mysql_data:/var/lib/mysql
	  ports:
   - 3306:3306
  • enviroment: ... -> CLI에서 -e MYSQL_ROOT_PASSWORD=password 역할과 동알하다.
  • volumnes: ... -> CLI 에서 -v {호스트 경로}:/var/lib/mysql 역할과 동일하다.

2. compose 파일 실행

$ docker compose up -d

3. compose 실행 현황

$ docker compose ps
$ docker ps

4. 잘 작동하는 지 DBeaver 연결 확인

5. volumne의 경로에 데이터 저장되고 있는지 확인

6. compose로 실행된 컨테이너 삭제

$ docker compose down

Docker Compose로 Spring Boot 실행

1. 프로젝트 셋팅

Java17 버전을 기준으로 진행

2. 간단한 코드 작성

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

3. Dockerfile 작성

FROM openjdk:17-jdk

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

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

4. Spring Boot 프로젝트 빌드

$ ./gradlew clean build

5. compose 파일 작성

compose.yml

services:
 my-server:
  build: .
  ports:
   - 8080:8080
  • build: . -> compose.yml 이 존재하는 디렉토리( . )에 있는 Dockerfile로 이미지를 생성해 컨테이너를 뛰우겠다는 의미

참고) Docker CLI 로 실행

$ docker build -t hello-server .
$ docker run -d -p 8080:8080 hello-server

6. compose 파일 실행시키기

$ docker compose up -d --build

7. compose 실행 현황 보기

$ docker compose ps
$ docker ps

8. localhost :8080으로 들어가보기

9. compose로 실행된 컨테이너 삭제

$ docker compose down
profile
I'm kooks

0개의 댓글