본문 바로가기

카테고리 없음

Docker Compose

  • Docker Compose 를 사용하는 이유는?
    • 편하게 설정하기: Docker Compose는 여러 컨테이너를 한 파일에 적어서 설정할 수 있어요. 이 파일에는 컨테이너가 무슨 이미지를 쓸지, 어떤 포트를 사용할지, 환경 변수는 뭐가 필요한지 등을 적어둬요. 이렇게 하면 여러 컨테이너를 한 번에 쉽게 설정할 수 있죠.
    • 자동으로 배포하기: 설정 파일이 있으면, Docker Compose가 알아서 컨테이너들을 만들어 주고 실행해 줘요. 개발자가 일일이 명령어를 입력할 필요가 없어요.
    • 의존성 관리: 컨테이너들이 서로 의존하는 관계가 있으면, Docker Compose가 이를 관리해 줘요. 예를 들어, A 컨테이너가 B 컨테이너를 필요로 하면, A를 먼저 켜고 나서 B를 실행하는 식이죠.
    • 모니터링과 로깅: Docker Compose는 컨테이너들이 어떻게 돌아가는지 지켜보고, 로그도 모아줘요. 이렇게 하면 문제가 생겼을 때 빨리 찾아서 고칠 수 있어요.
    • 확장성: 여러 컨테이너를 하나의 그룹으로 관리할 수 있어요. 이게 좋은 이유는, 예를 들어 웹 앱을 만드는 여러 컨테이너를 한꺼번에 관리하고 확장하기 쉽기 때문이에요.
    • 유연성: Docker Compose는 개발 환경, 테스트 환경, 실제 운영 환경에서도 같은 설정 파일을 써서 일관성을 유지할 수 있어요.
    • 보안 강화: 컨테이너들의 네트워크를 분리해서 외부로부터의 접근을 제한할 수도 있어요. 이렇게 하면 보안이 더 강화돼요.
    • 유지보수가 쉬워요: 설정 파일 하나로 컨테이너들을 관리하기 때문에, 뭔가 바꿀 일이 있으면 파일만 수정하면 돼요. 그러면 Docker Compose가 알아서 변경사항을 적용해 줘요.

 

  • Compose 파일은 앱이 필요로 하는 모든 서비스들(데이터베이스, 큐, 캐시, 웹 API 등)을 정리해주고, docker compose up 명령어로 이 모든 것을 한 번에 시작할 수 있어요.
  • 이런 기능들 덕분에 개발자가 새 프로젝트를 시작할 때 시간을 많이 절약할 수 있어요. 여러 페이지에 걸친 설명서 대신에 Compose 파일 하나로 모든 설정을 할 수 있으니까요.
  • 자동화된 테스트 환경에서
    • 자동화된 테스트는 앱이 잘 돌아가는지 확인하는 데 중요해요. Docker Compose는 이런 테스트를 위한 별도의 환경을 쉽게 만들고 없앨 수 있어요.
    • Compose 파일에 테스트 환경을 정의해두고, 간단한 명령어 몇 개로 테스트 환경을 만들고 테스트를 실행한 다음, 다시 환경을 없앨 수 있어요. 예를 들어 다음과 같은 명령어를 사용하면 돼요.
    • docker compose up -d ./run_tests docker compose down
  • 단일 호스트 배포에서
    • Docker Compose는 주로 개발과 테스트에 많이 쓰이지만, 실제로 앱을 운영하는 환경(프로덕션)에도 쓸 수 있어요. 매번 새 버전이 나올 때마다 이런 용도로도 쓰기 좋게 계속 개선되고 있어요.
    • \

 

  • Docker Compose의 특장점
    • 한 번에 여러 컨테이너 설정하기:
      • Docker Compose는 여러 컨테이너의 설정을 하나의 YAML 파일에 넣어서 관리해요. 이 파일 하나로 여러 컨테이너의 모든 환경을 설정하고, 그걸로 여러 컨테이너를 한 번에 실행할 수 있죠.
    • 빠른 서비스 실행:
      • 설정 값들을 저장해 두고 다시 쓸 수 있어요. 만약 설정이 바뀌지 않았다면, Docker Compose는 이전에 저장해둔 정보를 다시 사용해서 서비스를 더 빨리 시작할 수 있어요.
    • 같은 네트워크에서 쉽게 연결:
      • docker-compose.yaml 파일에 있는 애플리케이션들은 모두 같은 네트워크에 자동으로 연결돼요. 이렇게 하면 복잡한 네트워크 설정 없이도 여러 컨테이너가 서로 쉽게 통신할 수 있어요.
  • Docker Compose 실행하기
    1. 각 애플리케이션의 Dockerfile 작성하기
      • 보통 내가 만든 애플리케이션을 실행하기 위한 Dockerfile 만 작성
    2. docker-compose.yaml 파일 작성하기
      • 내가 만든 애플리케이션을 실행하기 위해 필요한 database라든지 redis라든지 다른 서비스들을 한꺼번에 정의하는 파일을 작성
    3. docker compose up 으로 실행하기