2

I'm trying to set Couchbase and sync_gateway in docker containers, but I get some weird auth errors when sync_gateway tries to connect the database.

Couchbase is running ok on its container, and when I set the sync_gateway to use a GUEST user it's able to connect to couchbase. The problem is, I really want to use the username/password I create then I setup the couchbase container.

I know the couchbase is working because I can access it from the web interface on localhost:8091 and login with the username/password I created. But sync_gateway raises the errors I posted bellow when trying to access with the username/password from the configuration file.

Dockerfile

FROM couchbase/server
ENTRYPOINT ["/code/scripts/entrypoint.sh", "couchbase-server"]

This is the entrypoint.sh

#!/bin/bash

cb_cli() {
    ${CB_CLI} ${@} ${CREDENTIALS}
}

server_configured() {
    server_list=$(cb_cli server-list)
    return $([[ $? == 0 ]] && [[ $(echo ${server_list} | wc -l) != 0 ]])
}

setup_couchbase_server() {
   cb_cli cluster-init --cluster-ramsize=${RAM_SIZE} --cluster-username=admin --cluster-password=admin123
   cb_cli bucket-create --bucket-ramsize=${RAM_SIZE} --bucket=${BUCKET_NAME}
}

couchbase_config() {
    curl ${SERVER_ADDR} >&- 2>&-
    while [[ $? != 23 ]]; do
        sleep 3
        curl ${SERVER_ADDR}>&- 2>&-
    done

    ! server_configured && {
        echo "Setting up couchbase server..."
        setup_couchbase_server && echo "Setup complete"
    }
}

[[ "$1" == "couchbase-server" ]] && {
    /usr/sbin/runsvdir-start &
    couchbase_config
    echo "Starting Couchbase Server -- Web UI available at http://${SERVER_ADDR} and logs available in /opt/couchbase/var/lib/couchbase/logs"
    /usr/sbin/runsvdir-start
}

docker-compose.yml

version: '3'
services:
  couchbase_server:
    build: .
    ports:
      - "8091-8094:8091-8094"
      - "11210:11210"
    volumes:
      - .:/code
    environment:
      - CB_CLI=opt/couchbase/bin/couchbase-cli
      - SERVER_ADDR=localhost:8091
      - CREDENTIALS=-u admin -p admin123 -c localhost:8091
      - RAM_SIZE=1024
      - BUCKET_NAME=sync_gateway
  sync_gateway:
    image: couchbase/sync-gateway
    links:
      - "couchbase_server:db"
    depends_on:
      - couchbase_server
    volumes:
      - ./sync_gateway_config.json:/code
    command: /code
    ports:
      - 4984:4984
      - 4985:4985

sync_gateway_config.json

{
    "log": ["REST"],
    "interface": ":4984",
    "databases": {
        "sync_gateway": {
            "server": "http://db:8091",
            "username": "admin",
            "password": "admin123"
        }
    }
}

And finally, this is the error I get when I run docker-compose up:

couchbase_server_1  | Setting up couchbase server...
couchbase_server_1  | SUCCESS: init/edit localhost
couchbase_server_1  | SUCCESS: bucket-create
couchbase_server_1  | Setup complete
couchbase_server_1  | Starting Couchbase Server -- Web UI available at
http://localhost:8091 and logs available in /opt/couchbase/var/lib
/couchbase/logs

sync_gateway_1      | 2017-03-28T11:29:51.240Z Opening Couchbase 
database sync_gateway on <http://db:8091> as user "admin"

sync_gateway_1      | _time=2017-03-28T11:29:51.262+00:00 _level=INFO
_msg=Non-healthy node; node details:

sync_gateway_1      | _time=2017-03-28T11:29:51.262+00:00 _level=INFO 
_msg=Hostname=172.20.0.2:8091, Status=warmup, 
CouchAPIBase=http://172.20.0.2:8092
/sync_gateway%2B87e2e410d0e9da0295091c6de9ae5ae7, 
ThisNode=true

sync_gateway_1      | 2017-03-28T11:29:51.262Z WARNING: Error 
installing Couchbase design doc: no available couch rest URLs --
db.installViews.func1() at database.go:577

sync_gateway_1      | _time=2017-03-28T11:29:51.263+00:00 _level=INFO
_msg= Trying with 
http://172.20.0.2:8091/pools/default/bucketsStreaming/sync_gateway

sync_gateway_1      | _time=2017-03-28T11:29:51.268+00:00 _level=INFO
_msg=Non-healthy node; node details:

sync_gateway_1      | _time=2017-03-28T11:29:51.268+00:00 _level=INFO
_msg=Hostname=172.20.0.2:8091, Status=warmup, 
CouchAPIBase=http://172.20.0.2:8092
/sync_gateway%2B87e2e410d0e9da0295091c6de9ae5ae7, ThisNode=true

sync_gateway_1      | 2017-03-28T11:29:51.268Z WARNING: Error 
installing Couchbase design doc: no available couch rest URLs -- 
db.installViews.func1() at database.go:577

sync_gateway_1      | _time=2017-03-28T11:29:51.272+00:00 _level=INFO
_msg=Got new configuration for bucket sync_gateway

sync_gateway_1      | _time=2017-03-28T11:29:51.279+00:00 _level=INFO
_msg=Non-healthy node; node details:

sync_gateway_1      | _time=2017-03-28T11:29:51.280+00:00 _level=INFO 
_msg=Hostname=172.20.0.2:8091, Status=warmup, 
CouchAPIBase=
http://172.20.0.2:8092/sync_gateway%2B87e2e410d0e9da0295091c6de9ae5ae7,
ThisNode=true

sync_gateway_1      | 2017-03-28T11:29:51.280Z WARNING: Error
installing Couchbase design doc: no available couch rest URLs -- 
db.installViews.func1() at database.go:577

sync_gateway_1      | _time=2017-03-28T11:29:51.301+00:00 _level=INFO
_msg=Non-healthy node; node details:

sync_gateway_1      | _time=2017-03-28T11:29:51.301+00:00 _level=INFO
_msg=Hostname=172.20.0.2:8091, Status=warmup, 
CouchAPIBase=http://172.20.0.2:8092
/sync_gateway%2B87e2e410d0e9da0295091c6de9ae5ae7, ThisNode=true

sync_gateway_1      | 2017-03-28T11:29:51.301Z WARNING: Error
installing Couchbase design doc: no available couch rest URLs -- 
db.installViews.func1() at database.go:577

sync_gateway_1      | _time=2017-03-28T11:29:51.330+00:00 _level=INFO
_msg=Got new configuration for bucket sync_gateway

sync_gateway_1      | _time=2017-03-28T11:29:51.342+00:00 _level=INFO
_msg= Trying with selected node 0

sync_gateway_1      | _time=2017-03-28T11:29:51.399+00:00 _level=INFO 
_msg= Trying with selected node 0

sync_gateway_1      | 2017-03-28T11:29:51.576Z WARNING: Error from Incr
in sequence allocator (0) - attempt (1/3): MCResponse status=AUTH_ERROR,
opcode=SASL_AUTH, opaque=0, msg: 
Auth failure -- db.(*sequenceAllocator).incrWithRetry() at
sequence_allocator.go:88

sync_gateway_1      | 2017-03-28T11:29:51.589Z WARNING: Error from Incr 
in sequence allocator (0) - attempt (2/3): MCResponse status=AUTH_ERROR, 
opcode=SASL_AUTH, opaque=0, msg: 
Auth failure -- db.(*sequenceAllocator).incrWithRetry() at 
sequence_allocator.go:88

sync_gateway_1      | 2017-03-28T11:29:51.602Z WARNING: Error from Incr 
in sequence allocator (0) - attempt (3/3): MCResponse status=AUTH_ERROR,
opcode=SASL_AUTH, opaque=0, msg:
Auth failure -- db.(*sequenceAllocator).incrWithRetry() at 
sequence_allocator.go:88

sync_gateway_1      | 2017-03-28T11:29:51.613Z WARNING: Too many unsuccessful 
Incr attempts in sequence allocator - giving up (0): MCResponse status=
AUTH_ERROR, opcode=SASL_AUTH, opaque=0, msg: Auth failure -- 
db.(*sequenceAllocator).incrWithRetry()
at sequence_allocator.go:94

sync_gateway_1      | 2017-03-28T11:29:51.613Z WARNING: 
Error from Incr in _reserveSequences(0): Unable to increment sequence:
MCResponse status=AUTH_ERROR, opcode=SASL_AUTH, opaque=0, msg: Auth failure -- 
db.(*sequenceAllocator)._reserveSequences() at sequence_allocator.go:65

sync_gateway_1      | 2017-03-28T11:29:51.613Z FATAL: 
Error opening database: Unable to increment sequence: 
MCResponse status=AUTH_ERROR, opcode=SASL_AUTH, opaque=0, msg: Auth failure --
rest.RunServer() at config.go:677
4
  • 1
    I included the entrypoint code. I know this part works because I can access the couchbase web interface at localhost:8091 and login with the configured username and password. Apr 3, 2017 at 7:45
  • 1
    I added more information to the problem on 2 extra paragraphs. Apr 3, 2017 at 11:47
  • You have defined a Dockerfile, but what command did you use to build the image? What command have you issue when you ran docker-compose?
    – 030
    Apr 3, 2017 at 15:28
  • I did docker-compose build && docker-compose up. Apr 4, 2017 at 7:20

1 Answer 1

1

This was tricky, but it turned out that the username and password in the config file referred to the bucket instead of to the couchbase server. The answer was to include a password when creating a bucket. My setup_couchbase_server in file entrypoint.sh looks like this now:

setup_couchbase_server() {
   cb_cli cluster-init --cluster-ramsize=${CB_RAM_SIZE}
   cb_cli bucket-create --bucket-ramsize=${CB_RAM_SIZE} --bucket=${CB_SYNC_GATEWAY_BUCKET} --bucket-password=bucket_pass
}

Then the username has to be the same as the bucket name. Now it works.

4
  • Where should this be run? In the Dockerfile?
    – 030
    Apr 5, 2017 at 12:05
  • No, in the entrypoint, when the bucket is created. Apr 5, 2017 at 12:17
  • Could you copy the relevant snippet to the answer and indicate where to put it exactly
    – 030
    Apr 5, 2017 at 12:42
  • 1
    I edited my answer with the exact change. Apr 19, 2017 at 8:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .