1- #! /bin/sh
1+ #! /bin/bash
22
33# Log all subsequent commands to logfile. FD 3 is now the console
44# for things we want to show up in "docker logs".
@@ -9,7 +9,7 @@ CONFIG_DONE_FILE=/opt/couchbase/var/lib/couchbase/container-configured
99config_done () {
1010 touch ${CONFIG_DONE_FILE}
1111 echo " Couchbase Admin UI: http://localhost:8091" \
12- " \nLogin credentials: Administrator / password " | tee /dev/fd/3
12+ " \nLogin credentials: $COUCHBASE_USERNAME / $COUCHBASE_PASSWORD " | tee /dev/fd/3
1313 echo " Stopping config-couchbase service"
1414 sv stop /etc/service/config-couchbase
1515}
@@ -39,6 +39,19 @@ wait_for_uri() {
3939 echo " $uri ready, continuing"
4040}
4141
42+ wait_for_response () {
43+ echo " Waiting for $expected response to be available..."
44+ while true ; do
45+ status=$( curl http://127.0.0.1:8091/pools/default/buckets/$COUCHBASE_DEFAULT_BUCKET /scopes -u $COUCHBASE_USERNAME :$COUCHBASE_PASSWORD | jq -c $* )
46+ if [ " $status " = " null" ]; then
47+ break
48+ fi
49+ echo " $expected reponse not up yet, waiting 2 seconds..."
50+ sleep 2
51+ done
52+ echo " $expected reponse ready, continuing"
53+ }
54+
4255panic () {
4356 cat << EOF 1>&3
4457
5063 cat $LOGFILE 1>&3
5164 echo 1>&3
5265 kill -HUP 1
66+ sv stop /etc/service/config-couchbase &
5367 exit
5468}
5569
@@ -82,36 +96,62 @@ curl_check http://127.0.0.1:8091/node/controller/setupServices -d services=kv%2C
8296echo
8397
8498echo " Setting up credentials with curl:"
85- curl_check http://127.0.0.1:8091/settings/web -d port=8091 -d username=Administrator -d password=password
99+ curl_check http://127.0.0.1:8091/settings/web -d port=8091 -d username=$COUCHBASE_USERNAME -d $COUCHBASE_PASSWORD = $COUCHBASE_PASSWORD
86100echo
87101
88102echo " Enabling memory-optimized indexes with curl:"
89- curl_check -u Administrator:password -X POST http://127.0.0.1:8091/settings/indexes -d ' storageMode=memory_optimized'
103+ curl_check -u $COUCHBASE_USERNAME : $COUCHBASE_PASSWORD -X POST http://127.0.0.1:8091/settings/indexes -d ' storageMode=memory_optimized'
90104echo
91105
92106echo " Loading travel-sample with curl:"
93- curl_check -u Administrator:password -X POST http://127.0.0.1:8091/sampleBuckets/install -d ' ["travel-sample"]'
107+ curl_check -u $COUCHBASE_USERNAME : $COUCHBASE_PASSWORD -X POST http://127.0.0.1:8091/sampleBuckets/install -d ' ["travel-sample"]'
94108echo
95109
96- wait_for_uri 200 http://127.0.0.1:8091/pools/default/buckets/travel-sample -u Administrator:password
110+ wait_for_uri 200 http://127.0.0.1:8091/pools/default/buckets/travel-sample -u $COUCHBASE_USERNAME : $COUCHBASE_PASSWORD
97111
98112echo " Creating hotels FTS index with curl:"
99- curl_check -u Administrator:password -X PUT http://127.0.0.1:8094/api/index/hotels -H Content-Type:application/json -d @/opt/couchbase/create-index.json
113+ curl_check -u $COUCHBASE_USERNAME : $COUCHBASE_PASSWORD -X PUT http://127.0.0.1:8094/api/index/hotels -H Content-Type:application/json -d @/opt/couchbase/create-index.json
100114rm /opt/couchbase/create-index.json
101115echo
102116
103117echo " Creating RBAC 'admin' user on travel-sample bucket"
104118couchbase_cli_check user-manage --set \
105- --rbac-username admin --rbac-password password \
119+ --rbac-username admin --rbac-password $COUCHBASE_PASSWORD \
106120 --roles ' bucket_full_access[travel-sample]' --auth-domain local \
107- -c 127.0.0.1 -u Administrator -p password
121+ -c 127.0.0.1 -u $COUCHBASE_USERNAME -p $COUCHBASE_PASSWORD
108122echo
109123
110- # Configure Couchbase Shell
111- ls /home | xargs -i mkdir /home/{}/.cbsh
112- ls /home | xargs -i cp opt/couchbase/cbshconfig /home/{}/.cbsh/config
113- mkdir /root/.cbsh
114- cp /opt/couchbase/cbshconfig /root/.cbsh/config
124+
125+ if [ -z " ${COUCHBASE_DEFAULT_BUCKET} " ]; then
126+ echo " COUCHBASE_DEFAULT_BUCKET not defined, skip Bucket creation" | tee /dev/fd/3
127+ else
128+ echo " COUCHBASE_DEFAULT_BUCKET found, creating bucket $COUCHBASE_DEFAULT_BUCKET " | tee /dev/fd/3
129+ curl_check -u $COUCHBASE_USERNAME :$COUCHBASE_PASSWORD -X POST http://127.0.0.1:8091/pools/default/buckets/ -d name=$COUCHBASE_DEFAULT_BUCKET -d bucketType=couchbase -d ramQuota=256
130+ wait_for_uri 200 http://127.0.0.1:8091/pools/default/buckets/$COUCHBASE_DEFAULT_BUCKET -u $COUCHBASE_USERNAME :$COUCHBASE_PASSWORD
131+ if [ -z " ${COUCHBASE_DEFAULT_SCOPE} " ]; then
132+ echo " COUCHBASE_DEFAULT_SCOPE not defined, skip Scope creation" | tee /dev/fd/3
133+ else
134+ echo " COUCHBASE_DEFAULT_SCOPE found, creating scope $COUCHBASE_DEFAULT_SCOPE ." | tee /dev/fd/3
135+ if [ ${COUCHBASE_DEFAULT_SCOPE: 0: 1} == " _" ] || [ ${COUCHBASE_DEFAULT_SCOPE: 0: 1} == " %" ]; then
136+ echo " Skip because name starts with _ or %" | tee /dev/fd/3
137+ else
138+ curl_check -u $COUCHBASE_USERNAME :$COUCHBASE_PASSWORD -X POST http://127.0.0.1:8091/pools/default/buckets/$COUCHBASE_DEFAULT_BUCKET /scopes -d name=$COUCHBASE_DEFAULT_SCOPE
139+ wait_for_response " .scopes | map(select(.name ==\" $COUCHBASE_DEFAULT_SCOPE \" ))[0]"
140+ fi
141+ if [ -z " ${COUCHBASE_DEFAULT_COLLECTION} " ]; then
142+ echo " COUCHBASE_DEFAULT_COLLECTION not defined, skip Collection creation" | tee /dev/fd/3
143+ else
144+ echo " COUCHBASE_DEFAULT_COLLECTION found, creating scope $COUCHBASE_DEFAULT_COLLECTION ." | tee /dev/fd/3
145+ if [ ${COUCHBASE_DEFAULT_COLLECTION: 0: 1} == " _" ] || [ ${COUCHBASE_DEFAULT_COLLECTION: 0: 1} == " %" ]; then
146+ echo " Skip because name starts with _ or %" | tee /dev/fd/3
147+ else
148+ curl_check -u $COUCHBASE_USERNAME :$COUCHBASE_PASSWORD -X POST http://127.0.0.1:8091/pools/default/buckets/$COUCHBASE_DEFAULT_BUCKET /scopes/$COUCHBASE_DEFAULT_SCOPE -d name=$COUCHBASE_DEFAULT_COLLECTION
149+ wait_for_response " .scopes | map(select(.name ==\" $COUCHBASE_DEFAULT_SCOPE \" ))[0].collections | map(select(.name == \" $COUCHBASE_DEFAULT_COLLECTION \" ))[0]"
150+ fi
151+ fi
152+ fi
153+ fi
154+
115155
116156echo " Configuration completed!" | tee /dev/fd/3
117157
0 commit comments