Статьи

Настройте Docker-контейнер Couchbase, используя REST API

Образ докера Couchbase опубликован по адресу hub.docker.com/_/couchbase . Самый простой способ запустить это изображение:

1
docker run -d -p 8091:8091 couchbase/server

8091 — это сетевой порт, используемый веб-консолью Couchbase для трафика REST. Полный набор портов задокументирован в Couchbase Network Configuration . Этот образ может быть настроен с использованием конфигурации одного хоста для одного контейнера, как описано на hub.docker.com/_/couchbase .

Этот блог покажет, что вы можете создать кластер Couchbase с одним узлом с помощью Docker, настроить его с помощью службы данных, индекса и запроса, загрузить образец корзины и запросить его.

Начните контейнер докера Couchbase

Запустите Docker-контейнер Couchbase, используя следующий docker-compose.yml :

01
02
03
04
05
06
07
08
09
10
mycouchbase:
  name: mycouchbase
  image: couchbase/server
  volumes:
    - ~/couchbase:/opt/couchbase/var
  ports:
    - 8091:8091
    - 8092:8092
    - 8093:8093
    - 11210:11210

Этот файл Docker Compose можно загрузить с github.com/arun-gupta/docker-images/tree/master/couchbase-server .

Контейнер может быть запущен как:

1
2
docker-compose up -d
Creating couchbaseserver_mycouchbase_1

Состояние работающего контейнера можно увидеть как:

01
02
03
04
05
06
07
08
09
10
docker-compose ps
           Name                       Command                       State                        Ports           
-----------------------------------------------------------------------------------------------------------------
couchbaseserver_mycouchbas   /entrypoint.sh couchbase-s   Up                           11207/tcp,                
e_1                          ...                                                       0.0.0.0:11210->11210/tcp
                                                                                       11211/tcp, 18091/tcp,     
                                                                                       18092/tcp,                
                                                                                       0.0.0.0:8091->8091/tcp,   
                                                                                       0.0.0.0:8092->8092/tcp,   
                                                                                       0.0.0.0:8093->8093/tcp

Журналы можно рассматривать как:

1
2
3
docker-compose logs
Attaching to couchbaseserver_mycouchbase_1
mycouchbase_1 | Starting Couchbase Server -- Web UI available at http://<ip>:8091

Настройте контейнер докера Couchbase

  1. Получить IP-адрес Docker Host:
    1
    2
    docker-machine ip default
    192.168.99.100

    Используйте этот IP-адрес во всех последующих командах.

  2. Настройте память для служб данных и индексирования:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    curl -v -X POST http://192.168.99.100:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300
    * Hostname was NOT found in DNS cache
    *   Trying 192.168.99.100...
    * Connected to 192.168.99.100 (192.168.99.100) port 8091 (#0)
    > POST /pools/default HTTP/1.1
    > User-Agent: curl/7.37.1
    > Host: 192.168.99.100:8091
    > Accept: */*
    > Content-Length: 36
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 36 out of 36 bytes
    < HTTP/1.1 401 Unauthorized
    < WWW-Authenticate: Basic realm="Couchbase Server Admin / REST"
    * Server Couchbase Server is not blacklisted
    < Server: Couchbase Server
    < Pragma: no-cache
    < Date: Wed, 25 Nov 2015 22:48:16 GMT
    < Content-Length: 0
    < Cache-Control: no-cache
    <
    * Connection #0 to host 192.168.99.100 left intact
  3. Настройте службы данных, запросов и индексирования:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    curl -v http://192.168.99.100:8091/node/controller/setupServices -d 'services=kv%2Cn1ql%2Cindex'
    * Hostname was NOT found in DNS cache
    *   Trying 192.168.99.100...
    * Connected to 192.168.99.100 (192.168.99.100) port 8091 (#0)
    > POST /node/controller/setupServices HTTP/1.1
    > User-Agent: curl/7.37.1
    > Host: 192.168.99.100:8091
    > Accept: */*
    > Content-Length: 26
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 26 out of 26 bytes
    < HTTP/1.1 200 OK
    * Server Couchbase Server is not blacklisted
    < Server: Couchbase Server
    < Pragma: no-cache
    < Date: Wed, 25 Nov 2015 22:49:51 GMT
    < Content-Length: 0
    < Cache-Control: no-cache
    <
    * Connection #0 to host 192.168.99.100 left intact
  4. Настройте учетные данные для кластера:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    curl -v -X POST http://192.168.99.100:8091/settings/web -d port=8091 -d username=Administrator -d password=password
    * Hostname was NOT found in DNS cache
    *   Trying 192.168.99.100...
    * Connected to 192.168.99.100 (192.168.99.100) port 8091 (#0)
    > POST /settings/web HTTP/1.1
    > User-Agent: curl/7.37.1
    > Host: 192.168.99.100:8091
    > Accept: */*
    > Content-Length: 50
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 50 out of 50 bytes
    < HTTP/1.1 200 OK
    * Server Couchbase Server is not blacklisted
    < Server: Couchbase Server
    < Pragma: no-cache
    < Date: Wed, 25 Nov 2015 22:50:43 GMT
    < Content-Type: application/json
    < Content-Length: 44
    < Cache-Control: no-cache
    <
    * Connection #0 to host 192.168.99.100 left intact

Установите Couchbase Travel Sample Bucket

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl -v -u Administrator:password -X POST http://192.168.99.100:8091/sampleBuckets/install -d '["travel-sample"]'
* Hostname was NOT found in DNS cache
*   Trying 192.168.99.100...
* Connected to 192.168.99.100 (192.168.99.100) port 8091 (#0)
* Server auth using Basic with user 'Administrator'
> POST /sampleBuckets/install HTTP/1.1
> Authorization: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==
> User-Agent: curl/7.37.1
> Host: 192.168.99.100:8091
> Accept: */*
> Content-Length: 17
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 17 out of 17 bytes
< HTTP/1.1 202 Accepted
* Server Couchbase Server is not blacklisted
< Server: Couchbase Server
< Pragma: no-cache
< Date: Wed, 25 Nov 2015 22:51:51 GMT
< Content-Type: application/json
< Content-Length: 2
< Cache-Control: no-cache
<
* Connection #0 to host 192.168.99.100 left intact
[]

Query Couchbase Docker Container с использованием CBQ

  1. Список идентификатора контейнера сервера Couchbase:
    1
    2
    3
    docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES
    e54a9849ba35        couchbase/server    "/entrypoint.sh couch"   3 minutes ago       Up 3 minutes        0.0.0.0:8091-8093->8091-8093/tcp, 11207/tcp, 11211/tcp, 18091-18092/tcp, 0.0.0.0:11210->11210/tcp   couchbaseserver_mycouchbase_1

    Эти выходные данные показывают полную информацию о контейнере. В качестве альтернативы, просто идентификатор контейнера можно получить как:

    1
    2
    docker ps | grep couch | awk '{print $1}'
    e54a9849ba35
  2. Запустите инструмент Couchbase Query:
    1
    2
    3
    docker exec -it e5 /opt/couchbase/bin/cbq
    Couchbase query shell connected to http://localhost:8093/ . Type Ctrl-D to exit.
    cbq>
  3. Запустите запрос:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    cbq> select * from `travel-sample` limit 1;
    {
        "requestID": "9b354cc0-371c-4126-84a2-dea302312b79",
        "signature": {
            "*": "*"
        },
        "results": [
            {
                "travel-sample": {
                    "callsign": "AIRFRANS",
                    "country": "France",
                    "iata": "AF",
                    "icao": "AFR",
                    "id": 137,
                    "name": "Air France",
                    "type": "airline"
                }
            }
        ],
        "status": "success",
        "metrics": {
            "elapsedTime": "48.080992ms",
            "executionTime": "47.950777ms",
            "resultCount": 1,
            "resultSize": 293
        }
    }

    Вы поняли, что это был SQL-запрос для документа JSON? Как круто. Узнайте больше об этом интерактивном руководстве по N1QL .

Обзор кластера можно увидеть в 192.168.99.100:8091 :

couchbase-докер-контейнер-кластер-обзор-1024x630

Контейнеры данных можно рассматривать как:

couchbase-докер-контейнер-databucket-1024x289

Задайте свои вопросы на forums.couchbase.com, узнайте больше о Couchbase REST API или узнайте больше в Couchbase 4 Docs .

Последующий блог покажет, как все эти шаги могут быть полностью автоматизированы.

Наслаждайтесь!