다음과 같은 컨테이너 기술 Docker 는 인프라와 OS의 차이를 추상화하는 완전한 런타임 환경과 함께 애플리케이션을 패키지화하여 소프트웨어 개발, 테스트 및 배포 프로세스를 크게 간소화했습니다. 이 게시물은 프라이머 를 사용하여 도커를 사용하여 카우치베이스 모바일 개발 환경과 몇 가지 문제 해결 팁을 제공합니다.
이 게시물에서 설명하는 모든 내용은 간단한 개발 개발 프로세스를 가속화하여 Couchbase Mobile을 사용하여 쉽고 빠르게 모바일 앱을 구축할 수 있도록 지원합니다.
이와 관련된 post를 활용하는 방법에 대해 설명합니다. Kubernetes 를 사용하여 프로덕션 환경에서 Couchbase Mobile 클러스터의 배포를 확장하고 관리할 수 있습니다. 그리고 카우치베이스 자율 운영자 를 사용하면 클러스터 배포 및 관리 작업이 크게 간소화됩니다.
배경
높은 수준에서는 전체 카우치베이스 모바일 스택은 다음 구성 요소로 구성됩니다.
- 모바일 앱에 통합된 NoSQL 임베디드 데이터베이스인 Couchbase Lite는 다음과 같습니다.
- 동기화 게이트웨이: 클라이언트와 Couchbase Server 간의 데이터 동기화를 담당하는 게이트웨이입니다.
- 데이터 지속성을 담당하는 Couchbase 서버
Couchbase Mobile을 사용하여 개발을 시작하려면 Couchbase Server 및 동기화 게이트웨이 인스턴스가 필요합니다. Couchbase Lite 프레임워크를 앱에 통합하게 됩니다.
이 게시물에서는 Docker를 사용하여 인스턴스를 배포하는 방법에 대해 알아보겠습니다. 동기화 게이트웨이 노드와 단일 노드 카우치베이스 서버 클러스터의 데스크톱 개발 목적에 적합한 환경을 제공합니다.
Docker 설치
아직 설치하지 않으셨다면 설치 가이드 데스크톱 환경에 맞게 설정하세요.
터미널 창에 다음 명령을 입력하여 도커 설치를 확인할 수 있습니다.
1 |
도커 --버전 |
다음과 유사한 응답이 표시됩니다.
1 |
Docker 버전 18.03.0-ce, 빌드 0520e24 |
카우치베이스 서버 설치
카우치베이스 서버는 다음에서 사용할 수 있습니다. 도커 허브 에서 카우치베이스
저장소입니다. 이 글을 작성하는 시점에 이 버전은 6.0.1입니다.
- 먼저 도커 허브에서 도커 이미지를 가져옵니다. 터미널 창을 열고 다음 명령을 실행합니다.
1 |
도커 pull 카우치베이스/서버 |
- 로컬 도커 네트워크가 없는 경우 "cbnetwork"(또는 임의의 이름)라는 이름의 로컬 도커 네트워크를 만듭니다. 터미널 창을 열고 다음 명령을 실행합니다. "cbnetwork" 이외의 네트워크 이름을 사용하는 경우에는 나머지 지침에서 해당 이름의 용도를 업데이트하는 것을 잊지 마세요.
1 2 |
도커 네트워크 ls 도커 네트워크 create -d bridge cbnetwork |
카우치베이스 서버 구성
Couchbase 서버가 설치되어 실행 중이면 동기화 게이트웨이와 함께 사용하기 전에 서버를 구성해야 합니다.
다음은 여러분이 해야 할 최소한의 일들입니다.
- 적절한 서비스로 클러스터를 생성합니다. 개발 요구사항에는 단일 노드 클러스터로 충분합니다.
- 서버 액세스를 위한 관리자 계정 구성
- 클러스터 구성
- 기본 버킷 만들기
- 적절한 버킷 수준 액세스 권한을 가진 RBAC 사용자를 만듭니다. 동기화 게이트웨이에서 RBAC 사용자 자격 증명을 사용하여 Couchbase 서버를 인증합니다.
Couchbase Server를 구성하는 방법에는 두 가지 옵션이 있습니다. 매뉴얼 그리고 자동화된. 선택에 따라 해당 섹션으로 이동합니다.
옵션 1: 관리자 UI를 사용한 구성
Couchbase 관리 콘솔 UI를 통해 Couchbase 서버를 수동으로 구성할 수 있습니다.
관리자 UI에 액세스하려면 앞서 가져온 도커 이미지를 실행해야 합니다.
- 다음 명령으로 Couchbase Server를 실행합니다. 그러면 카우치베이스 서버가 데몬 프로세스로 실행됩니다.
1 |
도커 실행 -d --이름 cb-서버 --네트워크 cbnetwork -p 8091-8094:8091-8094 -p 11210:11210 카우치베이스/서버 |
- 다음 명령을 실행하여 언제든지 로그를 볼 수 있습니다.
1 |
도커 로그 -f cb-서버 |
- 서버가 성공적으로 시작되었다면 출력에 다음과 같은 내용이 표시되어야 합니다.
1 |
시작 카우치베이스 서버 -- 웹 UI 사용 가능 에서 http://<IP>:8091 그리고 로그 사용 가능 in /opt/카우치베이스/var/lib/카우치베이스/로그 |
- 서버가 시작되는 데 몇 초 정도 걸릴 수 있습니다. 다음 명령을 사용하여 도커 이미지가 실행 중인지 확인합니다.
1 |
도커 ps |
- 서버가 실행되면 URL을 열어 서버에 액세스합니다.
http://localhost:8091
브라우저에서 - 의 지침을 따르세요. 설정 가이드 를 클릭하여 관리자 계정을 구성하고 단일 노드 클러스터를 만듭니다.
- 지침을 따르세요. 여기 를 클릭하여 버킷을 만듭니다.
- 다음으로 동기화 게이트웨이에 연결할 RBAC 사용자를 만듭니다. 이 사용자는 지침에 지정된 대로 "애플리케이션 액세스 권한" 역할로 만들어집니다. 여기
- 카우치베이스 서버가 설정되면 다음 사항에 유의하세요.
- 생성한 버킷의 이름
- 설정에 사용한 RBAC 사용자 자격 증명
동기화 게이트웨이를 구성할 준비가 되면 RBAC 자격 증명과 버킷 이름이 필요합니다.
수동 프로세스도 괜찮지만 각 개발 설정에서 이 과정을 여러 번 반복해야 한다면 지루할 수 있습니다. 구성 단계를 자동화할 수 있다면 얼마나 좋을까요? 이에 대해 자세히 알고 싶다면 다음 섹션으로 넘어가고, 그렇지 않다면 동기화 게이트웨이 설정 섹션으로 건너뛰세요.
옵션 2: CLI를 사용한 구성
명령줄을 통해 적절한 구성 값으로 컨테이너를 실행할 수 있는 사용자 정의 도커 이미지를 Couchbase Server 6.0.1 이미지에서 생성했습니다. 이는 설치/자동화 프로세스를 자동화/스크립트화하려는 경우에 특히 유용합니다.
이 글을 작성할 당시에는 6.0.1이 최신 버전이었지만 이 글을 읽고 계실 때는 최신 버전이 아닐 수도 있습니다. 따라서 다른 서버 버전으로 사용자 지정 이미지를 빌드하려면 "구성 가능한 사용자 지정 Docker 이미지 빌드하기"의 단계를 따르세요.
- Couchbase Server 6.0.1을 기반으로 하는 이 사용자 지정 개발 버전의 Couchbase Server 이미지를 다운로드하세요.
1 |
도커 pull 프리야쿠치/카우치베이스-dev-6.0<코드 클래스="너비 설정:참 랭:SH 랩:참"></코드><코드 클래스="너비 설정:참 랭:SH 랩:참"> |
- 사용자 지정 이미지를 성공적으로 다운로드했으면 시작 명령의 일부로 적절한 구성 값을 제공하여 시작할 수 있습니다. RBAC 사용자 자격 증명과 버킷 이름을 기록해 두세요. 이는 동기화 게이트웨이 구성 중에 관련됩니다.
- COUCHBASE_ADMINISTRATOR_USERNAME은 Couchbase 관리자의 이름입니다.
- COUCHBASE_ADMINISTRATOR_PASSWORD는 카우치베이스 관리자 비밀번호입니다.
- COUCHBASE_BUCKET은 생성하려는 데이터베이스 버킷의 이름입니다.
- COUCHBASE_RBAC_USERNAME은 애플리케이션 수준 버킷 액세스 권한이 있는 Sycn 게이트웨이 RBAC 사용자의 이름입니다.
- COUCHBASE_RBAC_PASSWORD는 RBAC 사용자의 비밀번호입니다.
- COUCHBASE_RBAC_NAME은 RBAC 사용자의 사용자 친화적인 이름입니다.
- CLUSTER_NAME 카우치베이스 서버 클러스터의 이름입니다.
터미널 창을 열고 다음 명령을 입력합니다. 구성 가능한 각 매개변수에 적절한 값을 입력할 수 있습니다.
1 |
도커 실행 -d --이름 cb-서버 --네트워크 cbnetwork -p 8091-8094:8091-8094 -p 11210:11210 -e 카우치베이스_관리자_사용자명=관리자 -e 카우치베이스_관리자_비밀번호=비밀번호 -e 카우치베이스_버킷=데모버킷 -e couchbase_rbac_username=관리자 -e couchbase_rbac_password=비밀번호 -e 카우치베이스_rbac_이름="admin" -e 클러스터_이름=데모-클러스터 프리야쿠치/카우치베이스-dev-6.0 |
- 다음 명령을 실행하여 언제든지 로그를 볼 수 있습니다.
1 |
도커 로그 -f cb-서버 |
- 인내심을 가져야 합니다. 서버가 시작되고 실행되는 데 몇 분 정도 걸립니다. 성공하면 출력은 다음과 같이 표시되어야 합니다.
1 |
< 100 50 0 0 100 50 0 1172 --:--:-- --:--:-- --:--:-- 1219 * 연결 #0에서 127.0.0.1 호스트에 그대로 남겨둠 성공: 버킷 생성 성공: RBAC 사용자가 /entrypoint.sh couchbase-server를 설정했습니다. |
- 끝났습니다! 이제 설치를 테스트할 수 있습니다.
URL을 열어 액세스합니다.http://localhost:8091
를 클릭하고 구성이 지정된 대로 되어 있는지 확인합니다.

사용자 지정 구성 가능한 도커 이미지 구축
구성 가능한 옵션이 있는 사용자 정의 이미지를 어떻게 생성했는지 궁금하다면 몇 가지 방법이 있습니다. 하지만 저는 튜토리얼. 기본적으로 기본 Coucbase 서버 이미지에서 사용자 정의 도커 이미지를 빌드하고 개발 요구 사항에 맞게 구성했습니다!
에 설명된 대로 수많은 사용자 정의 구성 가능한 값이 있습니다. 카우치베이스 CLI 그리고 REST 인터페이스 사양을 설정했습니다. 제 사용자 지정 도커 이미지에서는 몇 가지 중요한 매개변수만 구성할 수 있도록 허용하고 나머지는 기본값으로 두었습니다.
다른 버전의 카우치베이스 서버를 기반으로 고유한 이미지를 생성하거나 구성 가능한 매개 변수를 사용자 지정하려면 다음 단계에 따라 생성할 수 있습니다. 가이드
동기화 게이트웨이 설치
이제 Couchbase 서버를 구성하고 실행 중이므로 동기화 게이트웨이를 설치하겠습니다. 동기화 게이트웨이를 시작하기 전에 Couchbase Server가 실행 중이어야 합니다.
동기화 게이트웨이는 다음에서 사용할 수 있습니다. 도커 허브 에서 카우치베이스
repo.
- 먼저 도커 허브에서 도커 이미지를 가져옵니다. 새 터미널 창을 열고 다음을 실행합니다.
1 |
도커 pull 카우치베이스/동기화-게이트웨이 |
- 동기화 게이트웨이를 시작하려면 반드시 구성 파일 여기서 연결할 Couchbase 서버의 URL, 액세스할 버킷 및 버킷 액세스에 사용할 RBAC 자격 증명을 지정합니다. 구성 파일은 동기화 게이트웨이의 런타임 동작을 결정합니다.
가져온 도커 이미지는 기본 구성 파일로 빌드됩니다. 아무것도 지정하지 않으면 기본 구성 파일이 사용되며, 이는 사용자에게 적합하지 않을 수 있습니다.
- 사용하려는 구성이 있는 경우 원하는 편집기에서 해당 구성을 엽니다. 없는 경우 다음과 같은 이름의 새 설정 파일을 만듭니다.
동기화 게이트웨이-config.json
를 클릭하고 다음 구성 설정을 복사합니다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
{ "인터페이스":":4984", "logging": { "로그_파일_경로": "/var/tmp/sglogs", "콘솔": { "log_level": "debug", "log_keys": ["*"] }, "오류": { "enabled": true, "회전": { "max_size": 20, "max_age": 180 } }, "경고": { "enabled": true, "회전": { "max_size": 20, "max_age": 90 } }, "정보": { "enabled": false }, "debug": { "enabled": false } }, "데이터베이스": { "demobucket": { "import_docs": "연속", "enable_shared_버킷_액세스":true, "bucket":"demobucket", "서버": "http://cb-server:8091", "username": "admin", "비밀번호": "비밀번호", "NUM_INDEX_REPLICAS":0, "users":{ "GUEST": {"disabled":true}, "admin": {"비밀번호": "비밀번호", "admin_channels": ["*"]} }, "revs_limit":20 } } } |
- 적절한
동기화
함수 또는 기타 구성 속성을 사용할 수 있습니다. 여기서는 개발 환경에 필수적인 주요 설정에 중점을 두겠습니다. 아래에 명시된 대로 구성 파일을 적절히 편집해야 합니다. - 그리고
서버
URL은 카우치베이스 서버 컨테이너의 이름을 지정합니다. 에서도커 실행
명령을 사용하여 카우치베이스 서버를 시작할 때, 이름을 지정했습니다.--이름
옵션을 선택합니다. - 그리고
데이터베이스
그리고버킷
와 일치해야 합니다.$Couchbase_버킷
값을 설정할 수 있습니다. 이 예제에서는 다음과 같이 지정되었습니다.데모버킷
. - 그리고
사용자 이름
는 버킷 액세스를 위해 생성한 RBAC 계정의 사용자 이름에 해당합니다.$COUCHBASE_RBAC_USERNAME
값을 지정할 수 있습니다. 이 예제에서는 다음과 같이 지정되었습니다.관리자
. - 그리고
비밀번호
는 버킷 액세스를 위해 생성한 RBAC 계정의 비밀번호에 해당합니다.$COUCHBASE_RBAC_PASSWORD
값을 설정할 수 있습니다. 이 예제에서는 비밀번호로 지정되었습니다. - 구성 파일이 설정되면 해당 파일로 동기화 게이트웨이를 시작합니다. 이를 위해 터미널을 열고 다음 명령을 실행합니다.
1 2 3 |
cd /경로/에/동기화-게이트웨이-구성.json 도커 실행 -p 4984-4985:4984-4985 --네트워크 cbnetwork --이름 동기화-게이트웨이 -d -v `pwd`/동기화-게이트웨이-구성.json:/등/동기화 게이트웨이/동기화 게이트웨이.json 카우치베이스/동기화-게이트웨이 -관리자 인터페이스 :4985 /등/동기화 게이트웨이/동기화 게이트웨이.json |
- 다음 명령을 실행하여 언제든지 로그를 볼 수 있습니다.
1 |
도커 로그 -f 동기화-게이트웨이 |
- 동기화 게이트웨이가 시작되는 데 몇 초 정도 걸릴 수 있습니다. 다음 명령을 사용하여 도커 이미지가 실행 중인지 확인합니다.
1 |
도커 ps |
- URL을 열어 동기화 게이트웨이가 실행 중인지 확인합니다.
http://localhost:4984
를 클릭합니다.
다음과 같은 출력이 표시됩니다.
1 |
{"couchdb":"환영","vendor":{"name":"카우치베이스 동기화 게이트웨이","버전":"2.8"},"버전":"카우치베이스 동기화 게이트웨이/2.8(2;35fe28e)"} |
- URL을 열어 동기화 게이트웨이가 Couchbase Server 버킷과 통신하고 있는지 확인합니다.
http://localhost:4985/demobucket/
을 클릭합니다. 여기데모버킷
는 생성한 데이터베이스 버킷의 이름입니다.
동기화 게이트웨이의 버전을 나타내는 아래와 유사한 출력이 표시되어야 합니다.
1 |
{"committed_update_seq":0,"compact_running":false,"db_name":"demobucket","디스크_포맷_버전":0,"인스턴스_시작_시간":1554265962361858,"purge_seq":0,"state":"온라인","update_seq":0} |
이제 끝입니다! 동기화 게이트웨이의 도커 인스턴스가 Couchbase 서버와 통신합니다.
환경 관리
이 섹션에서는 환경을 관리하는 데 도움이 되는 몇 가지 기본 도커 명령어를 살펴봅니다.
컨테이너 중지/시작
- 언제든지 도커 컨테이너를 중지하고 다시 시작할 수 있습니다.
중지
그리고시작
도커 명령을 다음과 같이 실행합니다.- 컨테이너 중지
12도커 중지 동기화-게이트웨이도커 중지 cb-서버- 컨테이너 시작
12도커 시작 cb-서버도커 시작 동기화-게이트웨이
참고 에 따르면 Couchbase 서버를 중지하면 동기화 게이트웨이가 몇 분 동안 서버에 다시 연결을 시도한 후 포기합니다. 따라서 서버가 장시간 중지된 경우에는 동기화 게이트웨이 컨테이너도 중지했다가 다시 시작하거나 온라인
API를 사용하여 다시 온라인 상태로 되돌릴 수 있습니다.
동기화 게이트웨이 구성 업데이트
- 동기화 게이트웨이 구성을 업데이트하려면 업데이트된 동기화 게이트웨이 구성 파일로 동기화 게이트웨이를 다시 실행해야 합니다. 이를 위해서는 동기화 게이트웨이 컨테이너를 중지하고 제거해야 합니다.
1 2 |
도커 중지 동기화-게이트웨이 도커 rm 동기화-게이트웨이 |
동기화 게이트웨이 이미지를 제거하지 않은 경우 업데이트된 구성으로 동기화 게이트웨이를 다시 시작하려고 하면 아래와 유사한 '이름 충돌 오류'가 표시됩니다.
1 |
도커: 오류 응답 에서 daemon: 충돌. 그리고 컨테이너 이름 "/sync-gateway" 는 이미 in 사용 by 컨테이너 "bc67153afda9b90303b2965b62c5e34751ce3748fd8d5fb7ed38a418d7b77cfd". 당신 가지고 에 제거 (또는 이름 바꾸기) 그 컨테이너 에 be able 에 재사용 그 이름. 참조 '도커 실행 --도움말'.<코드 클래스="bash"> |
카우치베이스 서버 구성 업데이트하기
- 마찬가지로 업데이트된 구성으로 Couchbase 서버를 다시 실행하려면 Couchbase 서버를 중지하고 제거해야 합니다.
1 2 |
도커 중지 cb-서버 도커 rm cb-서버 |
그러나 변경된 서버 구성에 따라 동기화 게이트웨이 컨테이너를 중지 및 제거한 후 업데이트된 동기화 게이트웨이 구성 파일로 다시 시작해야 할 수도 있습니다. 예를 들어 버킷에 대한 RBAC 자격 증명을 변경했거나 버킷의 이름을 변경한 경우입니다.
컨테이너에서 명령 실행
실행 중인 컨테이너에서 직접 명령을 실행하고 싶을 때가 있습니다. 이를 위해 도커 exec
명령을 사용하여 컨테이너에 셸을 열 수 있습니다. 이 명령은 디버깅 등에 매우 유용합니다. 이 명령을 실행하려면 루트 권한이 필요합니다.
- 카우치베이스 서버
1 |
sudo 도커 exec -i -t cb-서버 /bin/bash |
- 동기화 게이트웨이
1 |
sudo 도커 exec -i -t 동기화-게이트웨이 /bin/bash |
다음 단계
이 포스팅을 통해 알 수 있듯이 도커 컨테이너를 사용하면 개발 환경에서 Couchbase 서버 및 동기화 게이트웨이 클러스터를 매우 편리하게 사용할 수 있습니다. 백엔드 설정이 끝나면 Couchbase Lite로 멋진 모바일 앱을 구축하는 데 집중할 수 있습니다.
다음 단계로 다음을 사용할 수 있습니다. 도커-컴포즈 를 사용하여 Couchbase Server와 동기화 게이트웨이 컨테이너를 모두 설치합니다. 동기화 게이트웨이가 가동 및 실행되려면 Couchbase Server가 있어야 한다는 점에 유의하세요.
이 글에서는 개발 환경에서 도커 컨테이너를 설정하는 방법에 대해 설명했습니다. 실제 프로덕션 환경에서는 단일 노드 클러스터를 배포하지 않을 것입니다. 고가용성을 위해 여러 노드를 사용하고 싶을 것입니다. 다음과 같은 오케스트레이션 기술을 사용할 수 있습니다. Kubernetes 를 사용하여 Couchbase Mobile 클러스터의 배포 및 관리를 간소화할 수 있습니다.
질문이나 피드백이 있으시면 아래에 댓글을 남겨 주세요. The 카우치베이스 포럼 를 통해 질문할 수 있습니다.
구성 파일에 실수가 있습니다. - "enable_shared_bucket_access":true의 매개변수가 중복되었습니다,
새 설정 파일을 업로드하는 방법을 찾고 있는데 아이디어가 있으신가요?
중복 구성 항목은 문제를 일으키지 않습니다. 양성이지만 수정하겠습니다. 업데이트된 파일로 도커 컨테이너를 다시 시작해야 합니다.
동기화 게이트웨이가 시작되지 않고 중복 항목이 있다는 오류 메시지가 표시되어 정상적이지 않은 것 같았습니다. 서버와 동기화 게이트웨이를 다시 시작했는데도 이 오류가 발생했습니다.
2021-01-11T18:01:08.890Z [ERR] 구성 파일 /etc/sync_gateway/를 읽는 중 오류가 발생했습니다: /etc/sync_gateway/:를 읽습니다 - config.go:1091에서 rest.ServerMain()이 디렉터리입니다.
문제를 토론하고 디버깅하려면 Couchbase 개발자 포럼을 이용하세요. 이러한 주제에 더 적합한 채널입니다.
또한 중복 구성 항목을 제공했을 때 동기화 게이트웨이가 시작되지 않는다고 하셨으니 해당 문제를 나타내는 로그를 공유해 주세요. 표시되는 오류는 이와 관련이 없습니다.
ddsfsdf