docker-compose 사용 방법

2023. 12. 31. 04:37Docker

docker로 단일 컨테이너만 사용하다
DB연결 처럼 여러개의 컨테이너를 한 번에 사용하려고 docker-compose를 사용하게 되었다.


docker-compose 사용이유 (Chat gpt)

  1. 다중 컨테이너 관리:
    • docker-compose를 사용하면 여러 개의 컨테이너를 하나의 프로젝트로 정의하고 실행할 수 있습니다. 이는 여러 서비스 간의 의존성이 있는 경우에 특히 유용합니다.
  2. 간편한 정의 파일:
    • docker-compose.yml 파일을 사용하여 컨테이너, 네트워크, 볼륨 등을 정의할 수 있습니다. 이 파일은 간결하면서도 컨테이너 간의 관계를 명확히 정의할 수 있습니다.
  3. 환경 구성의 통일성:
    • docker-compose.yml 파일에 환경 변수, 포트 매핑, 볼륨 마운트 등을 정의하여, 여러 환경에서 동일한 서비스를 실행하거나 배포할 때 통일성을 유지할 수 있습니다.
  4. 쉬운 스케일링:
    • 동일한 서비스를 여러 개의 복제본으로 쉽게 스케일링할 수 있습니다. docker-compose up --scale service_name=3과 같은 명령으로 간단하게 복제본 수를 지정할 수 있습니다.
  5. 다양한 환경에서의 일관성:
    • 개발, 테스트, 스테이징, 프로덕션 등 다양한 환경에서 동일한 docker-compose.yml 파일을 사용하여 일관성을 유지할 수 있습니다.
  6. 서비스 간 통신 간소화:
    • 여러 서비스가 함께 작동해야 하는 경우, docker-compose는 컨테이너 간 통신을 간소화하고 서비스 디스커버리를 쉽게 구현할 수 있게 합니다.
  7. 자동 네트워크 생성:
    • docker-compose는 기본적으로 프로젝트마다 고유한 네트워크를 생성하므로, 서비스 간 통신이 더 쉽고 격리된 환경에서 일어납니다.
  8. 빠른 환경 구성 및 테스트:
    • 개발자는 로컬 환경에서 간단히 docker-compose up 명령어를 사용하여 애플리케이션을 빠르게 실행하고 테스트할 있습니다.

 


docker-compose.yml 파일 생성

version: '3'

services:
  app:
    build:
      context: . //(가져와야 하는 소스코드 경로)
      dockerfile: ./ecs/develop/Dockerfile //(도커 파일 위치)
    working_dir: /app  //(도커 파일에서 사용되는 작동하는 작업 위치)
    command: yarn start //(서비스 실행 명령어)
    ports:
      - '3000:3000' //(실제 사용되는 포트 번호: 설정된 도커 컨테이너 포트번호)
    depends_on:
      - db //(DB서비스에 종속되어있음 db 서비스가 먼저 실행된 후에 실행됌)

  db:
    image: mongo:latest
    volumes:
      - /var/lib/mongo/data:/var/lib/mongo/data (실제 로컬 저장소 : 도커 컨테이너 저장소)
    ports:
      - '27017:27017' //(실제 사용되는 포트 번호: 설정된 도커 컨테이너 포트번호)

 

 


실행

명령어


docker-compose build : 이미지 빌드

docker-compose up : 컨테이너 실행

docker-compose down : 빌드 이미지 삭제

 

728x90
반응형