라파엘 우골리니 는 현재 벨기에 브뤼셀에 본사를 둔 풀스택 소프트웨어 개발업체입니다. He 는 10년 이상 소프트웨어 개발 분야에서 일해 왔으며 최근에는 웹 솔루션 디자인에 주력하고 있습니다. 개발 파이썬과 자바스크립트를 사용합니다. 라파엘 우골리니는 파모코의 수석 소프트웨어 개발자입니다.

FullSizeRender

소개

Docker는 전 세계 개발자들이 다음에서 애플리케이션을 실행하는 데 도움을 주는 훌륭한 프로젝트입니다. 컨테이너. 이렇게 하면 소프트웨어를 더 빨리 출시하는 데 도움이 될 뿐만 아니라 "내 컴퓨터에서 작동합니다"라는 유명한 문구도 얻을 수 있습니다. 이 글에서는 바로 사용할 수 있는 데이터베이스를 갖기 위해 웹 UI 상호 작용이 필요 없는 모듈식 Couchbase 이미지를 만드는 방법을 설명합니다.

모든 코드를 사용할 수 있습니다. 여기 온라인.

도커파일

첫 번째 단계는 도커파일을 만드는 것입니다.

카우치베이스 버전

이 예제는 Couchbase Server Enterprise 4.6.1을 기반으로 하지만, 사용자 환경에서 실행 중인 특정 버전으로 자유롭게 변경할 수 있습니다.

메모리 구성

여기의 모든 값은 MB 단위입니다:

- MEMORY_QUOTA: 노드당 데이터 서비스 램 할당량

- 인덱스 메모리 쿼터: 노드별 인덱스 서비스 램 할당량

- FTS_MEMORY_QUOTA: 노드 인덱스별 서비스 램 할당량

서비스

생성된 노드에서 사용할 수 있는 서비스입니다:

- kv: 데이터

- n1ql: 쿼리

- 색인: 색인

- fts: 전체 텍스트 검색

자격 증명

카우치베이스 서버에서 사용할 사용자 이름과 비밀번호입니다.

클러스터 옵션

이 옵션은 클러스터에 노드를 두 개 이상 추가하려는 경우에만 사용됩니다.

- 클러스터_호스트: 이 노드가 가입할 클러스터의 호스트 이름

- 클러스터 재조정: 노드가 조인된 후 클러스터를 재조정하려면 "true"를 설정합니다.

엔트리포인트

Couchbase Server 이미지는 이미 entrypoint.sh 스크립트와 함께 제공되므로 이를 재정의하고 싶지 않습니다. 여기서 요령은 entrypoint.sh 버전을 /config-entrypoint.sh에 복사하고, 백그라운드에서 Couchbase Server entrypoint.sh를 실행한 다음, 노드를 구성한 후 스크립트를 원본에 다시 첨부하는 것입니다. 엔트리포인트.

엔트리포인트

그리고 엔트리포인트 는 카우치베이스 서버 이미지의 원본 스크립트와 함께 사용됩니다. 어떻게 작동하는지 한 줄 한 줄 살펴보겠습니다.

카우치베이스 서버 초기화

먼저 set -m을 사용하여 작업 제어, 백그라운드에서 실행되는 프로세스(원본과 같은 엔트리포인트)를 별도의 프로세스 그룹에서 실행합니다. 이 옵션은 스크립트와 같은 비대화형 모드에서는 기본적으로 꺼져 있습니다.

유틸리티 기능

이 함수는 카우치베이스 서버가 HTTP 호출에 응답하기 시작하는 시점을 확인하는 데 사용됩니다.

이것은 스크립트에서 에코 앞에 숫자를 추가하면 자동으로 걸음 수를 계산하는 유틸리티 함수입니다.

Couchbase Server API에서 노드의 출력을 구문 분석하기 위해 ython을 실행하여 다음을 읽는 함수를 사용하고 있습니다. STDIN를 사용하여 JSON과 Couchbase 노드로 변환합니다. 이는 리밸런싱에 사용됩니다.

노드 구성

첫 번째 단계는 서버가 준비될 때까지 기다린 다음 다음 기능을 사용하는 것입니다. 넘버링된_에코 에서 Couchbase Server가 API 호출을 사용할 수 있게 되는 데 걸린 시간을 확인할 수 있습니다.

그런 다음 변수를 설정합니다. 호스트 이름 를 사용하여 모든 API 호출에 사용하도록 설정하고 카운터도 넘버링된_에코 1로 설정하면 됩니다.

 

먼저 디스크 스토리지 구성을 설정한 다음 호스트 이름을 설정합니다.

클러스터에 참여하기

만약 클러스터_호스트 가 설정되어 있으면 스크립트가 현재 컨테이너 를 클러스터에 추가합니다.

클러스터에 노드를 추가한 후 스크립트에서 변수를 확인할 수도 있습니다. 클러스터_재조정 를 실행하여 클러스터를 자동으로 재조정해야 하는지 확인합니다. 여기에서 Python 함수를 사용하여 다음에서 노드를 읽습니다. /pools/default 엔드포인트.

클러스터에 참여하지 않음

서비스에 대한 메모리 설정.

노드에서 사용할 서비스입니다.

노드에 대한 자격 증명을 설정합니다.

마무리

스크립트를 종료하려면 원본에 스크립트를 첨부합니다. 엔트리포인트.

사용 방법을 보여드리기 위해 다음 이미지에 등록된 이미지를 사용하겠습니다. 도커 허브 코드와 함께 여기.

단일 노드

 

이는 필요한 최소 메모리와 기본 자격 증명을 사용하여 단일 노드를 실행합니다(관리자/비밀번호) 이미지에 등록되어 있습니다. 모든 네트워크 포트 카우치베이스 서버 사용도 노출됩니다.

위의 명령은 Docker파일에서 사용할 수 있는 환경 변수를 약간 사용합니다.

클러스터

이 예제에서는 클러스터에 3개의 노드를 연결합니다.

 

먼저 모든 노드를 연결할 네트워크 카우치베이스를 만들어야 합니다.

그런 다음 첫 번째 노드를 생성합니다.

 

모든 네트워크 포트는 첫 번째 노드에 노출되어 있으므로 여기에 노출할 필요가 없습니다.

다음과 같은 세부 사항에 주의하세요. 클러스터_호스트 로 설정되어 있습니다. node1.cluster (첫 번째 노드의 호스트 이름)와 클러스터_재조정 도 true. 노드가 클러스터에 추가되면 자동으로 재조정됩니다.

 

노드3도 클러스터에 추가되지만, 이후 클러스터_재조정 가 설정되지 않은 경우 클러스터를 수동으로 재조정해야 사용할 수 있게 됩니다.

 

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

작성자

게시자 Laura Czajkowski, 개발자 커뮤니티 관리자, Couchbase

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

댓글 남기기