Docker Compose

WAS·2025년 5월 20일
0

도커

목록 보기
5/6

Docker Compose

  • 여러개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리하는 툴
  • 컨테이너가 하나일 때도 Docker Compose 를 사용한다 -> 긴 명령어를 간소화 시키기 때문에

Docker Compose 사용 이유

  • 여러 개의 컨테이너로 이루어진 복잡한 어플리케이션을 한번에 관리해줌
  • 여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움을 줌
  • 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음

EX) 이전에 MySQL 이미지를 컨테이너에 실행시킬 때 아래와 같이 복잡한 명령어를 실행함
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d my-mysql

하지만 Docker Compose 를 사용하면 위와 같은 컨테이너를 실행시킬 때마다
복잡한 명령어를 입력하지 않고, compose.yml 파일안에 아래와 같은 코드를 적고 (위 명령어 대상임) 단순히 docker compose up 명령어만 실행시키면 된다


Docker Compose 사용 예제

  1. compose.yml 을 만들어서 안에 다음과 같이 명령어를 입력한다
services:  # Docker Compose에서 하나의 컨테이너를 서비스라고 부름
  my-mysql: # 서비스에 이름을 붙이는 기능 (이름은 아무거나 가능)
    image: mysql # 컨테이너 실행시 어떤 이미지 사용할 지 정의하는 명령어로 CLI(커맨드라인에서는) $ docker run [이미지명]와 동일한 역할
    container_name: mysql-container # 컨테이너 명 생성(CLI(커맨드라인에서는) --name web-server 역할과 동일
    environment:
      MYSQL_ROOT_PASSWORD: password123
    ports:
      - 3306:3306 # 포트 매핑은 어떻게 할 지를 설정하는 옵션 CLI에서-p 3306:3306 역할과 동일
    volumes:
      - /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql
    restart: unless-stopped
  1. compose 파일 실행시키기
    dcocker compose up : 포그라운드에서 실행
    docker compose up -d : 백그라운드에서 실행

  2. compose 실행 현황 보기
    docker compose ps

💡 docker psdocker compose ps 차이가 무엇일까?
docker ps : 실행되고 있는 컨테이너를 모두 조회
docker compose ps : 위 compose.yml 에서 정의된 컨테이너 중에서 실행된 컨테이너만 조회
docker compose ps -a : 위 compose.yml 에서 정의된 컨테이너 중 모든(중지,실행,정지) 컨테이너 조회

  1. compose 로 실행된 컨테이너 삭제
    docker compose down

추가로 docker compose 명령어를 더 설명하겠다


✅ Docker Compose 로그 확인

  • compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력
  • docker compose log

✅ 컨테이너를 실행하기 전에 이미지 재빌드

  • compose.yml 에서 정의한 이미지 파일에서 코드가 변경될 경우, 이미지를 다시 빌드한 후
    컨테이너를 실행시켜야 변경된 부분이 적용된다 -> 이럴 경우 --build 옵션을 추가해서 사용
  • docker compose up --build : 포그라운드에서 실행
  • docker compose up --build -d : 백그라운드에서 실행

💡 docker compose updocker compose up --build 의 차이
docker compose up : 이미 빌드된 이미지가 있으면 그것을 사용해서 컨테이너 실행
docker compose up --build : 이미지가 있어도 무조건 새로 빌드하고 실행


✅ 이미지 다운받기 / 업데이트하기

  • compose.yml 에서 정의된 이미지를 다운 받거나 업데이트 한다
  • 로컬 환경에 이미지가 없다면 이미지를 다운
  • 로컬 환경에 이미 이미지가 있는데, Dockerhub의 이미지와 다른 이미지일 경우 이미지를 업데이트
  • docker compose pull

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글