This is an automated email from the ASF dual-hosted git repository.
yong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 44edbd10b7 fix docker compose deployment (#3660)
44edbd10b7 is described below
commit 44edbd10b79f6d573d147758a84007d9499e30fe
Author: Maciej Laskowski <[email protected]>
AuthorDate: Wed Dec 14 03:50:21 2022 +0100
fix docker compose deployment (#3660)
### Motivation
I tried to run the Apache BookKeeper server locally for learning and
development purposes. I found out that the
[deploy/docker-compose](https://github.com/apache/bookkeeper/tree/master/deploy/docker-compose)
is using some old docker images and is not working with the latest version of
BookKeeper and Zookeeper.
I updated it to work with current versions and also fixed #3657 .
### Changes
- updated images (BookKeeper and Zookeeper) to the latest official versions
- updated Helm template
- configuration adjusted to the latest versions
- numeration of services starts from `1` instead of `0`
- by default do not mount data to the host drive (empty `dataDir` value)
- updated `docker-compose.yml` according to the Helm template changes
- updated `README.md`
Master Issue: #3657
---
deploy/docker-compose/README.md | 21 ++---
deploy/docker-compose/compose/Chart.yaml | 4 +-
.../compose/templates/docker-compose.yml | 69 +++++++-------
deploy/docker-compose/compose/values.yaml | 9 +-
deploy/docker-compose/docker-compose.yaml | 101 ++++++---------------
5 files changed, 78 insertions(+), 126 deletions(-)
diff --git a/deploy/docker-compose/README.md b/deploy/docker-compose/README.md
index 0978bec63d..9517b2b1cd 100644
--- a/deploy/docker-compose/README.md
+++ b/deploy/docker-compose/README.md
@@ -2,16 +2,16 @@
## Requirements
-* Docker >= 16.10
-* Docker Compose >= 1.6.0
+* Docker >= 20.10
+* Docker Compose >= 2.12.0
## Quick start
```bash
$ git clone https://github.com/apache/bookkeeper.git
$ cd bookkeeper/deploy/docker-compose
-$ docker-compose pull # Get the latest Docker images
-$ docker-compose up -d
+$ docker compose pull # Get the latest Docker images
+$ docker compose up -d
$ cd ../../
$ bin/bkctl bookies list
$ bin/bkctl ledger simpletest
@@ -19,7 +19,6 @@ $ bin/bkctl ledger simpletest
## Access Apache BookKeeper cluster
-
### Ledger Service
You can use `zk://localhost:2181/ledgers` as metadataServiceUri to access
ledger storage service.
@@ -41,13 +40,9 @@ $ bin/dlog tool create -u
'distributedlog://localhost:2181/distributedlog' --pre
### Install Helm
-[Helm](https://helm.sh) is used as a template render engine
-
-```
-curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get |
bash
-```
+[Helm](https://helm.sh) is used as a template render engine.
-Or if you use Mac, you can use homebrew to install Helm by `brew install
kubernetes-helm`
+See how to [install Helm](https://helm.sh/docs/intro/install/).
### Bring up Apache BookKeeper cluster
@@ -56,6 +51,6 @@ $ git clone https://github.com/apache/bookkeeper.git
$ cd bookkeeper/deploy/docker-compose
$ vi compose/values.yaml # custom cluster size, docker image, port mapping etc
$ helm template compose > generated-docker-compose.yaml
-$ docker-compose -f generated-docker-compose.yaml pull # Get the latest Docker
images
-$ docker-compose -f generated-docker-compose.yaml up -d
+$ docker compose -f generated-docker-compose.yaml pull # Get the latest Docker
images
+$ docker compose -f generated-docker-compose.yaml up -d
```
diff --git a/deploy/docker-compose/compose/Chart.yaml
b/deploy/docker-compose/compose/Chart.yaml
index 73bb4b216e..8579f60fdb 100644
--- a/deploy/docker-compose/compose/Chart.yaml
+++ b/deploy/docker-compose/compose/Chart.yaml
@@ -19,10 +19,10 @@
apiVersion: v1
description: apache-bookkeeper-docker-compose
name: apache-bookkeeper-docker-compose
-version: 4.8.0
+version: 4.15.3
home: https://github.com/apache/bookkeeper
sources:
- - https://github.com/apache/bookkeeper/deploy/docker-compose
+ - https://github.com/apache/bookkeeper/tree/master/deploy/docker-compose
keywords:
- log storage
- stream storage
diff --git a/deploy/docker-compose/compose/templates/docker-compose.yml
b/deploy/docker-compose/compose/templates/docker-compose.yml
index fbc70be15e..756971ab51 100644
--- a/deploy/docker-compose/compose/templates/docker-compose.yml
+++ b/deploy/docker-compose/compose/templates/docker-compose.yml
@@ -29,40 +29,38 @@
{{- $bookieHttpPort := .Values.bookkeeper.bookieHttpPort | int }}
{{- define "zookeeper_servers" }}
- {{- range until (.Values.zookeeper.size | int) }}
- {{- if . -}}
- ,
- {{- end -}}
- zookeeper-{{ . }}:2181
- {{- end -}}
+{{- range until (.Values.zookeeper.size | int) }}
+{{- if . -}}
+,
+{{- end -}}
+zookeeper-{{ add 1 . }}:2181
+{{- end -}}
{{- end -}}
{{- define "metadata_service_uri" }}
- {{- range until (.Values.zookeeper.size | int) }}
- {{- if . -}}
- ;
- {{- end -}}
- zookeeper-{{ . }}:2181
- {{- end -}}
+{{- range until (.Values.zookeeper.size | int) }}
+{{- if . -}}
+;
+{{- end -}}
+zookeeper-{{ add 1 . }}:2181
+{{- end -}}
{{- end -}}
-{{- define "zookeeper_server_list" }}
- {{- $zk := dict "servers" (list) -}}
- {{- range until (.Values.zookeeper.size | int) }}
- {{- $noop := printf "server.%d=zookeeper-%d:%d:%d:participant;0.0.0.0:%d"
. . ($.Values.zookeeper.peerPort | int) ($.Values.zookeeper.leaderPort | int)
($.Values.zookeeper.clientPort | int) | append $zk.servers | set $zk "servers"
-}}
- {{- end -}}
- {{- join " " $zk.servers -}}
+{{- define "zookeeper_server_list" }}
+{{- $zk := dict "servers" (list) -}}
+{{- range until (.Values.zookeeper.size | int) }}
+{{- $noop := printf "server.%d=zookeeper-%d:%d:%d;%d" (add 1 .) (add 1 .)
($.Values.zookeeper.peerPort | int) ($.Values.zookeeper.leaderPort | int)
($.Values.zookeeper.clientPort | int) | append $zk.servers | set $zk "servers"
-}}
+{{- end -}}
+{{- join " " $zk.servers -}}
{{- end -}}
version: '3'
services:
{{- range until $zkSize }}
- zookeeper-{{ . }}:
+ zookeeper-{{ add 1 . }}:
image: {{ $.Values.zookeeper.image }}
- hostname: zookeeper-{{ . }}
- command: ["zookeeper"]
{{- if eq $.Values.networkMode "host" }}
network_mode: host
{{- else }}
@@ -70,16 +68,15 @@ services:
- "{{ add $zkAdminPort . 1000 }}:{{ $zkAdminPort }}"
- "{{ add $zkClientPort . }}:{{ $zkClientPort }}"
{{- end }}
+ {{- if $.Values.dataDir }}
volumes:
- - {{ $.Values.dataDir }}/zookeeper-{{ . }}/data:/data/zookeeper/data
- - {{ $.Values.dataDir }}/zookeeper-{{ . }}/txlog:/data/zookeeper/txlog
+ - {{ $.Values.dataDir }}/zookeeper-{{ add 1 . }}/data:/data
+ - {{ $.Values.dataDir }}/zookeeper-{{ add 1 . }}/txlog:/datalog
+ {{- end }}
environment:
- - ZK_dataDir=/data/zookeeper/data
- - ZK_dataLogDir=/data/zookeeper/txlog
- - ZK_clientPort={{ $zkClientPort }}
- - ZK_ID={{ . }}
- - ZK_SERVERS={{- template "zookeeper_server_list" $ }}
- - ZK_standaloneEnabled=false
+ - ZOO_MY_ID={{ add 1 . }}
+ - ZOO_SERVERS={{- template "zookeeper_server_list" $ }}
+ - ZOO_STANDALONE_ENABLED=false
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:{{ $zkAdminPort
}}/commands/stat"]
interval: 60s
@@ -89,9 +86,8 @@ services:
{{ end }}
{{- range until $bkSize }}
- bookie-{{ . }}:
+ bookie-{{ add 1 . }}:
image: {{ $.Values.bookkeeper.image }}
- hostname: bookie-{{ . }}
{{- if eq $.Values.networkMode "host" }}
network_mode: host
{{- else }}
@@ -104,13 +100,14 @@ services:
- "{{ add $bookieHttpPort . }}:{{ $bookieHttpPort }}"
- "{{ add $bookieGrpcPort . }}:{{ $bookieGrpcPort }}"
{{- end }}
+ {{- if $.Values.dataDir }}
volumes:
- - {{ $.Values.dataDir }}/bookie-{{ . }}/journal:/data/bookkeeper/journal
- - {{ $.Values.dataDir }}/bookie-{{ . }}/ledgers:/data/bookkeeper/ledgers
+ - {{ $.Values.dataDir }}/bookie-{{ add 1 .
}}/journal:/data/bookkeeper/journal
+ - {{ $.Values.dataDir }}/bookie-{{ add 1 .
}}/ledgers:/data/bookkeeper/ledgers
+ {{- end }}
environment:
- BK_zkServers={{- template "zookeeper_servers" $ }}
- - BK_zkLedgersRootPath=/ledgers
- - BK_metadataServiceUri=zk://{{- template "metadata_service_uri" $
}}/ledgers
+ - BK_metadataServiceUri=zk+hierarchical://{{- template
"metadata_service_uri" $ }}/ledgers
- BK_DATA_DIR=/data/bookkeeper
{{- if eq $.Values.networkMode "host" }}
- BK_bookiePort={{ $bookiePort }}
@@ -121,7 +118,7 @@ services:
- BK_httpServerEnabled=true
depends_on:
{{- range until $zkSize }}
- - "zookeeper-{{.}}"
+ - "zookeeper-{{add 1 .}}"
{{- end }}
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:{{ $bookieHttpPort
}}/heartbeat"]
diff --git a/deploy/docker-compose/compose/values.yaml
b/deploy/docker-compose/compose/values.yaml
index a3b3eda2b4..5b33da83aa 100644
--- a/deploy/docker-compose/compose/values.yaml
+++ b/deploy/docker-compose/compose/values.yaml
@@ -16,8 +16,9 @@
# * limitations under the License.
# */
-# data directories
-dataDir: ./data
+# data directories, set .e.g `./data` if you want to have
+# Zookeeper (data and datalog) and BookKeeper (journal and ledgers) volumes
mounted to your host
+dataDir:
# advertised address that bookies used for advertising themselves.
# host network mode is useless on Mac, so in order to let clients
@@ -31,7 +32,7 @@ networkMode: bridge
zookeeper:
size: 3
- image: apachebookkeeper/bookkeeper-current:latest
+ image: zookeeper:3.8.0
adminPort: 8080
clientPort: 2181
peerPort: 2888
@@ -39,7 +40,7 @@ zookeeper:
bookkeeper:
size: 3
- image: apachebookkeeper/bookkeeper-current:latest
+ image: apache/bookkeeper:4.15.3
bookiePort: 3181
bookieGrpcPort: 4181
bookieHttpPort: 8080
diff --git a/deploy/docker-compose/docker-compose.yaml
b/deploy/docker-compose/docker-compose.yaml
index 1e25df2129..4a07a31542 100644
--- a/deploy/docker-compose/docker-compose.yaml
+++ b/deploy/docker-compose/docker-compose.yaml
@@ -22,23 +22,15 @@
version: '3'
services:
- zookeeper-0:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: zookeeper-0
- command: ["zookeeper"]
+ zookeeper-1:
+ image: zookeeper:3.8.0
ports:
- "9080:8080"
- "2181:2181"
- volumes:
- - ./data/zookeeper-0/data:/data/zookeeper/data
- - ./data/zookeeper-0/txlog:/data/zookeeper/txlog
environment:
- - ZK_dataDir=/data/zookeeper/data
- - ZK_dataLogDir=/data/zookeeper/txlog
- - ZK_clientPort=2181
- - ZK_ID=0
- - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181
server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181
server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
- - ZK_standaloneEnabled=false
+ - ZOO_MY_ID=1
+ - ZOO_SERVERS=server.1=zookeeper-1:2888:3888;2181
server.2=zookeeper-2:2888:3888;2181 server.3=zookeeper-3:2888:3888;2181
+ - ZOO_STANDALONE_ENABLED=false
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
interval: 60s
@@ -46,23 +38,15 @@ services:
retries: 60
restart: on-failure
- zookeeper-1:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: zookeeper-1
- command: ["zookeeper"]
+ zookeeper-2:
+ image: zookeeper:3.8.0
ports:
- "9081:8080"
- "2182:2181"
- volumes:
- - ./data/zookeeper-1/data:/data/zookeeper/data
- - ./data/zookeeper-1/txlog:/data/zookeeper/txlog
environment:
- - ZK_dataDir=/data/zookeeper/data
- - ZK_dataLogDir=/data/zookeeper/txlog
- - ZK_clientPort=2181
- - ZK_ID=1
- - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181
server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181
server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
- - ZK_standaloneEnabled=false
+ - ZOO_MY_ID=2
+ - ZOO_SERVERS=server.1=zookeeper-1:2888:3888;2181
server.2=zookeeper-2:2888:3888;2181 server.3=zookeeper-3:2888:3888;2181
+ - ZOO_STANDALONE_ENABLED=false
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
interval: 60s
@@ -70,23 +54,15 @@ services:
retries: 60
restart: on-failure
- zookeeper-2:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: zookeeper-2
- command: ["zookeeper"]
+ zookeeper-3:
+ image: zookeeper:3.8.0
ports:
- "9082:8080"
- "2183:2181"
- volumes:
- - ./data/zookeeper-2/data:/data/zookeeper/data
- - ./data/zookeeper-2/txlog:/data/zookeeper/txlog
environment:
- - ZK_dataDir=/data/zookeeper/data
- - ZK_dataLogDir=/data/zookeeper/txlog
- - ZK_clientPort=2181
- - ZK_ID=2
- - ZK_SERVERS=server.0=zookeeper-0:2888:3888:participant;0.0.0.0:2181
server.1=zookeeper-1:2888:3888:participant;0.0.0.0:2181
server.2=zookeeper-2:2888:3888:participant;0.0.0.0:2181
- - ZK_standaloneEnabled=false
+ - ZOO_MY_ID=3
+ - ZOO_SERVERS=server.1=zookeeper-1:2888:3888;2181
server.2=zookeeper-2:2888:3888;2181 server.3=zookeeper-3:2888:3888;2181
+ - ZOO_STANDALONE_ENABLED=false
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/commands/stat"]
interval: 60s
@@ -94,28 +70,23 @@ services:
retries: 60
restart: on-failure
- bookie-0:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: bookie-0
+ bookie-1:
+ image: apache/bookkeeper:4.15.3
ports:
- "3181:3181"
- "8080:8080"
- "4181:4181"
- volumes:
- - ./data/bookie-0/journal:/data/bookkeeper/journal
- - ./data/bookie-0/ledgers:/data/bookkeeper/ledgers
environment:
- - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
- - BK_zkLedgersRootPath=/ledgers
- -
BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
+ - BK_zkServers=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
+ -
BK_metadataServiceUri=zk+hierarchical://zookeeper-1:2181;zookeeper-2:2181;zookeeper-3:2181/ledgers
- BK_DATA_DIR=/data/bookkeeper
- BK_advertisedAddress=127.0.0.1
- BK_bookiePort=3181
- BK_httpServerEnabled=true
depends_on:
- - "zookeeper-0"
- "zookeeper-1"
- "zookeeper-2"
+ - "zookeeper-3"
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
interval: 60s
@@ -123,28 +94,23 @@ services:
retries: 60
restart: on-failure
- bookie-1:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: bookie-1
+ bookie-2:
+ image: apache/bookkeeper:4.15.3
ports:
- "3182:3182"
- "8081:8080"
- "4182:4181"
- volumes:
- - ./data/bookie-1/journal:/data/bookkeeper/journal
- - ./data/bookie-1/ledgers:/data/bookkeeper/ledgers
environment:
- - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
- - BK_zkLedgersRootPath=/ledgers
- -
BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
+ - BK_zkServers=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
+ -
BK_metadataServiceUri=zk+hierarchical://zookeeper-1:2181;zookeeper-2:2181;zookeeper-3:2181/ledgers
- BK_DATA_DIR=/data/bookkeeper
- BK_advertisedAddress=127.0.0.1
- BK_bookiePort=3182
- BK_httpServerEnabled=true
depends_on:
- - "zookeeper-0"
- "zookeeper-1"
- "zookeeper-2"
+ - "zookeeper-3"
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
interval: 60s
@@ -152,33 +118,26 @@ services:
retries: 60
restart: on-failure
- bookie-2:
- image: apachebookkeeper/bookkeeper-current:latest
- hostname: bookie-2
+ bookie-3:
+ image: apache/bookkeeper:4.15.3
ports:
- "3183:3183"
- "8082:8080"
- "4183:4181"
- volumes:
- - ./data/bookie-2/journal:/data/bookkeeper/journal
- - ./data/bookie-2/ledgers:/data/bookkeeper/ledgers
environment:
- - BK_zkServers=zookeeper-0:2181,zookeeper-1:2181,zookeeper-2:2181
- - BK_zkLedgersRootPath=/ledgers
- -
BK_metadataServiceUri=zk://zookeeper-0:2181;zookeeper-1:2181;zookeeper-2:2181/ledgers
+ - BK_zkServers=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
+ -
BK_metadataServiceUri=zk+hierarchical://zookeeper-1:2181;zookeeper-2:2181;zookeeper-3:2181/ledgers
- BK_DATA_DIR=/data/bookkeeper
- BK_advertisedAddress=127.0.0.1
- BK_bookiePort=3183
- BK_httpServerEnabled=true
depends_on:
- - "zookeeper-0"
- "zookeeper-1"
- "zookeeper-2"
+ - "zookeeper-3"
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:8080/heartbeat"]
interval: 60s
timeout: 3s
retries: 60
restart: on-failure
-
-