Notice
Recent Posts
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
관리 메뉴

Dev_R

Docker Compose 설치와 사용법 - 초보자용 튜토리얼 본문

Server/Docker

Docker Compose 설치와 사용법 - 초보자용 튜토리얼

Dave(데이브) 2023. 7. 28. 19:00
반응형

docker compose 로고
docker compose

이번 글에서는 Docker Compose(도커 컴포즈)를 사용하여 다중 컨테이너 애플리케이션을 관리하는 방법에 대해 자세히 설명드리겠습니다.

Docker Compose를 활용하면 여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 쉽게 구성하고 관리할 수 있습니다.

 

 

Docker Compose란 무엇인가요?

docker compose 개념
docker compose 개념

Docker Compose는 여러 개의 서비스로 구성된 복잡한 애플리케이션을 쉽게 관리하기 위한 도구입니다.

여러분의 애플리케이션은 단일 컨테이너로 구성되지 않는 경우가 많습니다.

 

예를 들어, 웹 애플리케이션과 데이터베이스, 메시지 큐 등 여러 개의 서비스가 필요할 수 있습니다.

 

Docker Compose는 이러한 서비스들의 구성과 의존성을 정의하여 애플리케이션을 효과적으로 관리할 수 있도록 도와줍니다.

 

 

Docker Compose를 사용하기 위한 준비 단계

Docker Compose를 활용하여 다중 컨테이너 애플리케이션을 관리하려면 몇 가지 준비 단계가 필요합니다.

 

우선 터미널에 `docker compose version` 을 입력해 docker-compose가 정상적으로 설치되어져 있는지 확인합니다.

 

docker-compose version
docker-compose version

이후에 아래 순서에 따라 작업을 준비합니다.

  1. 각 서비스를 위한 Dockerfile 작성: 각 서비스를 위한 Dockerfile을 작성하여 해당 서비스의 도커 이미지를 빌드합니다. 이때 필요한 의존성이나 라이브러리들을 포함시켜야 합니다.
  2. Docker 이미지 빌드: 작성한 Dockerfile을 사용하여 각 서비스의 도커 이미지를 빌드합니다.
  3. Docker 이미지 업로드: 빌드한 Docker 이미지를 Docker Hub나 개인적으로 사용 가능한 레지스트리에 업로드합니다.

 

Docker Compose 파일 작성하기

Docker Compose 파일은 docker-compose.yml이라는 이름으로 작성하며, 이 파일에 애플리케이션을 구성하는 서비스들을 정의합니다. 각 서비스는 컨테이너의 설정과 속성을 포함하고 있습니다.

 

예를 들어, 웹 애플리케이션과 데이터베이스를 연결하는 Docker Compose 파일은 아래와 같이 작성할 수 있습니다.

version: '3'
services:
  webapp:
    image: node:14
    ports:
      - "8080:8080"
    volumes:
      - ./app:/app
    depends_on:
      - database
  database:
    image: mongo:latest
    volumes:
      - mongo_data:/data/db
volumes:
  mongo_data:

위의 예제에서 version은 현재 사용하는 Docker Compose 파일의 버전을 지정하며, services 섹션에는 다중 컨테이너 서비스들을 정의합니다.

 

 

Docker Compose 파일 설명하기

위의 예제에서 사용된 중요한 속성들을 설명하겠습니다.

  • **image**컨테이너를 실행할 때 사용할 도커 이미지를 지정합니다. node:14는 Node.js 14 버전 이미지를 사용하고, mongo:latest는 최신 버전의 MongoDB 이미지를 사용합니다.
  • **ports**호스트와 컨테이너의 포트를 매핑합니다. 예를 들어, 8080:8080은 호스트의 8080 포트와 컨테이너의 8080 포트를 연결합니다.
  • **volumes**호스트와 컨테이너의 디렉토리를 공유합니다. 위의 예제에서는 ./app 폴더를 컨테이너의 /app 폴더와 공유하고, mongo_data 볼륨을 컨테이너의 /data/db 폴더와 공유합니다.
  • **depends_on**서비스의 의존성을 설정합니다. 위의 예제에서 webapp 서비스가 시작하기 전에 database 서비스를 먼저 실행합니다.

 

 

Docker Compose로 애플리케이션 실행하기

docker-compose up

Docker Compose를 사용하여 애플리케이션을 실행하려면 터미널에서 프로젝트 폴더로 이동한 후 다음 명령어를 실행합니다:

$ docker-compose up -d 

위 명령어를 실행하면 Docker Compose는 docker-compose.yml 파일에 정의된 서비스들을 모두 실행합니다.

-d 옵션은 컨테이너들을 백그라운드에서 실행하도록 합니다.

 

 

 

애플리케이션 관리하기

Docker Compose로 실행된 애플리케이션을 관리하는 몇 가지 유용한 명령어를 소개하겠습니다.

  • 애플리케이션 중지하기
    docker-compose down 명령어는 실행 중인 컨테이너들을 중지하고 삭제합니다.
  • 로그 보기
    docker-compose logs 명령어를 사용하여 실행 중인 컨테이너들의 로그를 확인할 수 있습니다.
  • 실행 중인 서비스 목록 보기
    docker-compose ps 명령어로 현재 실행 중인 서비스의 목록을 확인할 수 있습니다.
  • 특정 서비스의 셸 접속하기
    docker-compose exec <service_name> sh 명령어는 특정 서비스의 컨테이너에 셸로 접속할 수 있습니다.

 

 

마무리

이제 Docker Compose를 사용하여 다중 컨테이너 애플리케이션을 관리하는 방법을 자세히 설명드렸습니다.

 

Docker Compose 파일을 작성하여 애플리케이션의 구성과 설정을 정의하고, 명령어를 사용하여 애플리케이션을 실행하고 관리하는 방법을 익히시기 바랍니다.

 

이제 여러분은 Docker Compose를 활용하여 개발과 배포를 더욱 효율적으로 관리할 수 있습니다.

더 궁금한 점이 있으면 언제든지 댓글로 문의해 주세요! 🐳

반응형
Comments