카우치베이스 서버

Docker와 Vaadin의 만남, 카우치베이스 - 2부

라트노팜 차크라바티 는 현재 에릭슨에서 근무하는 소프트웨어 개발자입니다. 그는 오랫동안 IoT, 기계 간 기술, 커넥티드 카, 스마트 시티 분야에 집중해 왔습니다. 그는 새로운 기술을 배우고 이를 실무에 적용하는 것을 좋아합니다. 일하지 않을 때는 3살 난 아들과 함께 시간을 보내는 것을 즐깁니다.

소개

이 시리즈의 2부에서는 Docker 도구 세트를 사용하여 Couchbase 기반의 완전한 기능을 갖춘 Spring Boot 웹 애플리케이션을 개발하고 실행하는 방법을 설명합니다. In 파트 1 시리즈에서는 두 개의 Docker 컨테이너를 실행하여 보기 좋은 UI를 갖춘 기능적인 애플리케이션을 실행하는 방법을 보여드렸습니다. 실행한 두 개의 Docker 컨테이너는 다음과 같습니다:

  1. A 카우치베이스 컨테이너 사전 구성된 설정으로
  2. 카우치베이스 컨테이너와 대화하는 애플리케이션 컨테이너(1단계에서 실행)

이 방법은 유용하지만 완전히 자동화된 것은 아니므로 자동화된 오케스트레이션이 제공되지 않습니다. 전체 설정을 실행하려면 두 개의 서로 다른 Docker 실행 명령을 실행해야 합니다.

애플리케이션 컨테이너를 빌드하고 실행하는 동시에 Couchbase 컨테이너의 실행을 트리거하는 방법이 있나요? 물론 방법이 있습니다.

Docker 작성 시작

사용 도커 컴포즈를 사용하면 다중 컨테이너 환경의 실행을 오케스트레이션할 수 있으며, 이것이 바로 우리 사용 사례에 필요한 것입니다. 먼저 Couchbase 컨테이너를 실행한 다음 애플리케이션 컨테이너가 실행되어 Couchbase 컨테이너와 통신해야 합니다.

다음은 이를 위한 docker-compose.yml 파일입니다:

우리 앱은 Couchbase 컨테이너인 DB 이미지에 "의존"합니다. 즉, Couchbase 컨테이너가 먼저 실행된 다음 앱 컨테이너가 실행되기 시작합니다. 여기서 한 가지 잠재적인 문제가 있습니다. "depends_on" 키워드는 Couchbase 컨테이너가 이미지 구성을 완료하고 실행을 시작했다는 것을 보장하지 않습니다. 컨테이너가 먼저 시작되었다는 것만 보장할 뿐, 컨테이너가 실제로 실행 중인지 또는 애플리케이션의 요청을 수락할 준비가 되었는지 여부는 확인하지 않습니다. Couchbase 컨테이너가 실제로 실행 중이고 쿼리, 인덱스 서비스 및 버킷 설정과 같은 모든 사전 구성 단계가 완료되었는지 확인하려면 애플리케이션 컨테이너에서 확인해야 합니다.

다음은 버킷이 이미 설정되었는지 여부를 차례로 확인하는 스크립트를 호출하는 앱 컨테이너의 Docker파일입니다. 이 스크립트는 버킷이 설정될 때까지 루프로 이동한 다음 앱 컨테이너를 트리거합니다.

https://github.com/ratchakr/bookstoreapp/blob/master/Dockerfile-v1

스크립트는 다음에서 확인할 수 있습니다. https://github.com/ratchakr/bookstoreapp/blob/master/run_app.sh

스크립트는 다음과 같은 작업을 수행합니다:

버킷을 쿼리하기 위해 Couchbase에서 지원하는 REST 엔드포인트를 사용합니다.

컬은 REST 엔드포인트를 호출하는 데 사용됩니다. curl의 설치는 애플리케이션의 Docker파일에서 다룹니다.

이 스크립트는 jq라는 도구를 사용하여 REST 호출의 JSON 응답을 구문 분석합니다.

버킷이 설정되어 있으면 앱 컨테이너를 실행하고, 그렇지 않으면 버킷이 먼저 설정될 때까지 기다립니다.

인덱스 서비스와 쿼리 서비스가 제대로 설정되었는지 여부와 같은 더 많은 검사를 셸 스크립트에 추가하여 더 강력하게 만들 수 있다는 점을 언급할 가치가 있습니다. 한 가지 주의할 점은 docker-compose 접근 방식을 따르기 전에 특정 사용 사례와 요구 사항을 확인하는 것입니다. Couchbase db 컨테이너가 완전히 실행 중이고 클라이언트 애플리케이션의 요청을 처리할 준비가 되어 있는지 확인할 수 있는 확실한 방법은 없습니다. 작동할 수 있는 몇 가지 접근 방식은 다음과 같습니다:

  1. 미리 구성된 버킷이 있는 경우 버킷이 존재하는지 테스트할 수 있습니다.
  2. 인덱스가 제자리에 있는지 확인
  3. 버킷의 레코드 수를 알고 있다면(초기 데이터 로드 시 버킷으로 가져온 .csv 파일을 예로 들어 보겠습니다), 그 수가 .csv 파일의 레코드 수와 일치하는지 확인할 수 있습니다.) 저희 사용 사례의 경우, 위에서 언급한 방법이 잘 작동합니다.

빌드 및 실행

이제 도커 컴포즈 파일과 도커파일을 준비했으니, 이제 간단한 도커-컴포지트 업 명령을 사용합니다.

다음은 Docker 콘솔의 출력 스니펫입니다:

이 시점에서 애플리케이션은 단일 docker-compose 오케스트레이션 명령으로 실행됩니다.

유형 192.168.99.100:8080 를 브라우저에 입력하면 다음 화면이 표시됩니다:

pasted image 0 12

Docker Compose는 멀티 컨테이너 Docker 환경을 오케스트레이션하는 좋은 방법입니다. "docker" 명령 집합과 거의 유사한 명령 체인을 가지고 있습니다. 예를 들어, 실행 중인 컨테이너 목록을 보려면 간단히 입력하기만 하면 됩니다:

docker-compose ps >를 실행하면 다음과 같은 결과가 나타납니다.

여기에는 컨테이너 이름이 굵은 글씨로 표시되어 있습니다.

Docker Compose로 오케스트레이션된 환경을 중지하거나 해체해야 하는 경우, 다음을 사용하여 이를 수행할 수 있습니다. 도커-컴포지트 다운 명령을 실행합니다:

샘플 실행이 생성됩니다:

이제 docker-compose ps를 실행하면 현재 실행 중인 컨테이너가 없음을 보여줍니다.

또한, 자동화된 테스트 환경에서 Docker 컨테이너를 시작하고, 테스트를 실행한 다음, 전체 인프라를 해체하는 데 Docker compose를 사용할 수 있으며, 이 모든 작업을 Compose로 수행할 수 있습니다. Docker Compose에 대한 자세한 개요를 보려면 공식 웹사이트.

이 게시물은 카우치베이스 커뮤니티 글쓰기 프로그램의 일부입니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by Laura Czajkowski

로라 챠코브스키는 카우치베이스의 Snr. 개발자 커뮤니티 매니저로 카우치베이스의 커뮤니티를 총괄하고 있습니다. 그녀는 월간 개발자 뉴스레터를 담당하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.