도커파일 스크립트 및 도커를 통해 카우치베이스와 통신하기

저는 팀과 함께 다양한 마이크로서비스를 만드는 프로젝트를 진행하고 있습니다. 이러한 마이크로서비스는
카우치베이스 서버 버킷에 우리가 선택한 간격의 데이터를 저장하고 AWS EC2 서버를 통해 작동합니다. 문제는 모든 사람이
우리 팀에는 선호하는 프로그래밍 언어가 있습니다. 이 서버에 모든 서버 측 언어를 설치하면 다음과 같이 될 것입니다.
비용이 많이 듭니다. 대신 각 마이크로서비스에 Docker 컨테이너를 사용하기로 결정했습니다. 간격을 두고 실행하기 때문에 다음과 같이 할 수 있습니다.
실행할 때마다 컨테이너를 제거하여 코어 서버를 가볍고 소프트웨어로 깔끔하게 유지합니다.

이 솔루션을 구현하기 위해 저희가 해온 몇 가지 작업을 살펴보겠습니다.

EC2 인스턴스에서 Docker 구성하기

현재 Ubuntu의 장기 지원 릴리스이기 때문에 Amazon EC2 호스트가 Ubuntu 14.04라고 가정해 보겠습니다. 로그인
를 실행하고 sudo 사용자로 다음을 실행합니다:

위의 방법은 Mac이나 Windows 환경에서와 같이 가상 머신이 아닌 호스트에 Docker를 설치하는 것입니다.

이 시점에서는 Docker를 사용할 수 있습니다. 저희의 의도는 빌드 스크립트를 사용하는 것이지만 수동으로도 사용할 수 있습니다. 다음과 같은 경우
EC2 인스턴스에 아직 Couchbase를 설치하지 않은 경우에도 설치할 수 있습니다. 최신 Debian 파일을 다운로드하세요.
카우치베이스 다운로드 섹션으로 이동하여 다음을 실행합니다:

또는 이미 카우치베이스 서버를 실행 중인 Amazon EC2 인스턴스를 스핀업하도록 선택할 수도 있습니다. 이에 대한 자세한 정보
주제를 찾을 수 있습니다. 여기.

빌드 스크립트 디자인

그리고 도커파일 는 Docker 이미지를 생성하기 위한 빌드 스크립트입니다. 이 스크립트에서는 사용할 운영 체제를 정의하고, 어떤 운영 체제가
다운로드할 패키지와 어떤 파일이 포함될지 결정합니다.

저는 Node.js를 더 좋아하기 때문에 이 프로젝트의 마이크로서비스는 Node.js입니다. 이 문서에서는 Java와 Python을 사용했지만 다른 일부 마이크로서비스는
는 특정 언어에 국한되지 않습니다. 제 마이크로서비스 중 하나의 빌드 파일은 다음과 같습니다:

위의 파일을 세분화하기 위해 모든 부분을 살펴보겠습니다.

먼저 이 이미지가 Ubuntu 14.04이며 비대화형임을 확인합니다. 이 이미지가 기본 이미지가 될 것이므로 시작하기 전에
종속성을 설치해야 하는 Node.js 프로젝트를 실행합니다. 운영 체제 리포지토리 목록을 업데이트하고 다음을 설치합니다. curl 왜냐하면
우분투는 기본적으로 제공되지 않으며 Node.js 리포지토리를 설치하려면 우분투가 필요합니다. 일단 curl 가 설치되어 있습니다.
Node.js 4.x 리포지토리를 추가하고 소프트웨어를 설치할 수 있습니다.

여기서부터 제 프로젝트에 대해 좀 더 구체적으로 설명하겠습니다. 제 프로젝트에는 다음과 같은 파일과 디렉터리가 있습니다:

  • models/
  • 경로/
  • package.json
  • app.js
  • config.json
  • mock_data.xml

그리고 도커파일 이 프로젝트 구조의 루트 내에 시트를 생성하고 있습니다.

이제 해야 할 일은 모든 것을 이미지에 복사하는 것입니다. 이 작업은 COPY 명령을 실행합니다. 한 번
모든 것이 복사되면 노드 패키지 관리자(NPM)에 모든 종속성을 설치하도록 지시할 수 있습니다.
package.json 파일을 만듭니다.

그리고 CMD 줄은 빌드된 이미지를 배포할 때 실행됩니다.

컨테이너 빌드 및 실행

현재로서는 도커파일 은 스크립트 또는 애플리케이션 파일과 같은 디렉터리에 있어야 합니다. 하지만
중요하지 않은, 내 애플리케이션 파일은 자동으로 실행되는 Node.js 프로젝트입니다.

컨테이너를 실행하기 전에 먼저 컨테이너의 청사진을 기반으로 컨테이너를 생성해야 합니다. 도커파일. 다음을 실행합니다.
도커 명령줄 인터페이스를 통해

위는 스크립트의 각 단계를 거쳐 이미지에 이름을 태그합니다. my_project. 일단 구축되면 언제든지
Docker 명령줄 도구에서 다음을 실행하여 이미지를 실행할 수 있습니다:

하지만 잠깐만요. 왜 우리가 --add-host="localhost:10.0.2.2"? 이 특정 예에서는 다음과 같은 가정을 가정합니다.
로컬 머신에서 다음과 같은 정보로 Couchbase를 실행 중입니다. localhost:8091. Node.js 애플리케이션에서 다음을 수행해 보겠습니다.
를 통해 카우치베이스 서버에 연결을 시도한다고 가정해 보겠습니다. http://localhost:8091. 기본적으로 도커는
를 다른 서브넷에 연결하면 불가능합니다. 로컬호스트는 여러분이 생각하는 것과는 다릅니다. 그래서 저희는 호스트에
매핑.

특정 시나리오에서는 다음과 같은 작업을 수행할 수도 있습니다. --net=host 대신 --add-host="localhost:10.0.2.2".
자세한 정보는 다음에서 확인할 수 있습니다.
공식 도커 문서.

전체 Node.js 프로젝트를 복사하고 다음을 추가했기 때문에 CMD ["node", "app.js"]를 클릭하면 이미지가 시작되면 명령이 실행됩니다.
그리고 app.js 에는 이론상으로는 Couchbase Node.js SDK를 통해 Couchbase Server와 인터페이스하는 로직이 포함됩니다. 동일한
는 모든 프로그래밍 언어와 Couchbase SDK에서 수행할 수 있습니다. 명령이 완료되면 컨테이너가 제거됩니다.

결론

방금 Ubuntu 서버에서 Docker를 실행하고 스크립트를 통해 컨테이너에서 프로젝트를 실행하는 방법을 살펴보았습니다. 이 방법은
모든 사람을 위한 것은 아니며, 주어진 프로그래밍 언어로 프로젝트를 실행할 수 있어야 한다는 우리의 요구를 수용합니다.
호스트 수준에서 실행되는 Couchbase Server에 데이터를 저장하도록 합니다.

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

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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