From 05b4b5a527c5e64d07a80dcfc6a51c707a646e82 Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 13:51:58 +0200 Subject: [PATCH 1/6] Use wait-for-it in order to only start Jaeger after Elasticsearch is ready. --- .gitmodules | 3 +++ docker-compose.accounts.yml | 2 +- docker-compose.jaeger.yml | 17 +++++++++++++---- docker/wait-for-it/Dockerfile | 3 +++ docker/wait-for-it/wait-for-it | 1 + 5 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 .gitmodules create mode 100644 docker/wait-for-it/Dockerfile create mode 160000 docker/wait-for-it/wait-for-it diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..deebbc02 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "docker/wait-for-it/wait-for-it"] + path = docker/wait-for-it/wait-for-it + url = https://github.com/vishnubob/wait-for-it.git diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml index 2f000764..a9bca9e3 100644 --- a/docker-compose.accounts.yml +++ b/docker-compose.accounts.yml @@ -70,7 +70,7 @@ services: kratos-migrate: image: oryd/kratos:v0.5.5-alpha.1 container_name: kratos-migrate - restart: "no" + restart: off logging: *default-logging environment: - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt diff --git a/docker-compose.jaeger.yml b/docker-compose.jaeger.yml index 7b9f1b76..22ff2fda 100644 --- a/docker-compose.jaeger.yml +++ b/docker-compose.jaeger.yml @@ -13,8 +13,6 @@ services: - JAEGER_AGENT_HOST=jaeger-agent - JAEGER_AGENT_PORT=6831 - JAEGER_REPORTER_LOG_SPANS=false - depends_on: - - jaeger-agent jaeger-agent: image: jaegertracing/jaeger-agent @@ -49,7 +47,7 @@ services: shared: ipv4_address: 10.10.10.91 depends_on: - - elasticsearch + - wait-for-it jaeger-query: image: jaegertracing/jaeger-query @@ -67,7 +65,18 @@ services: shared: ipv4_address: 10.10.10.92 depends_on: - - elasticsearch + - wait-for-it + + wait-for-it: + build: + context: ./docker/wait-for-it + dockerfile: Dockerfile + command: [ "./wait-for-it.sh", "localhost:9200" ] + container_name: wait-for-it + restart: on-failure + networks: + shared: + ipv4_address: 10.10.10.95 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.15 diff --git a/docker/wait-for-it/Dockerfile b/docker/wait-for-it/Dockerfile new file mode 100644 index 00000000..f1d23e1f --- /dev/null +++ b/docker/wait-for-it/Dockerfile @@ -0,0 +1,3 @@ +FROM bash:5 + +COPY wait-for-it/wait-for-it.sh ./ diff --git a/docker/wait-for-it/wait-for-it b/docker/wait-for-it/wait-for-it new file mode 160000 index 00000000..81b1373f --- /dev/null +++ b/docker/wait-for-it/wait-for-it @@ -0,0 +1 @@ +Subproject commit 81b1373f17855a4dc21156cfe1694c31d7d1792e From 6e236f64c7950547368721863fa0a48199b84215 Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 14:11:42 +0200 Subject: [PATCH 2/6] Try by mounting the script as a volume. --- .gitmodules | 3 +++ docker-compose.accounts.yml | 2 +- docker-compose.jaeger.yml | 23 +++++++------------- docker/wait-for-it/Dockerfile | 3 --- {docker/wait-for-it => packages}/wait-for-it | 0 5 files changed, 12 insertions(+), 19 deletions(-) delete mode 100644 docker/wait-for-it/Dockerfile rename {docker/wait-for-it => packages}/wait-for-it (100%) diff --git a/.gitmodules b/.gitmodules index deebbc02..ea466871 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "docker/wait-for-it/wait-for-it"] path = docker/wait-for-it/wait-for-it url = https://github.com/vishnubob/wait-for-it.git +[submodule "packages/wait-for-it"] + path = packages/wait-for-it + url = https://github.com/vishnubob/wait-for-it.git diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml index a9bca9e3..2f000764 100644 --- a/docker-compose.accounts.yml +++ b/docker-compose.accounts.yml @@ -70,7 +70,7 @@ services: kratos-migrate: image: oryd/kratos:v0.5.5-alpha.1 container_name: kratos-migrate - restart: off + restart: "no" logging: *default-logging environment: - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt diff --git a/docker-compose.jaeger.yml b/docker-compose.jaeger.yml index 22ff2fda..3a1c29dc 100644 --- a/docker-compose.jaeger.yml +++ b/docker-compose.jaeger.yml @@ -33,7 +33,7 @@ services: jaeger-collector: image: jaegertracing/jaeger-collector - command: [ "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] + command: [ "/wait-for-it/wait-for-it.sh", "elasticsearch:9200", "--", "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] container_name: jaeger-collector restart: on-failure expose: @@ -43,15 +43,17 @@ services: environment: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug + volumes: + - ./packages/wait-for-it:/wait-for-it networks: shared: ipv4_address: 10.10.10.91 depends_on: - - wait-for-it + - elasticsearch jaeger-query: image: jaegertracing/jaeger-query - command: [ "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] + command: [ "/wait-for-it/wait-for-it.sh", "elasticsearch:9200", "--", "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] container_name: jaeger-query restart: on-failure ports: @@ -61,22 +63,13 @@ services: environment: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug + volumes: + - ./packages/wait-for-it:/wait-for-it networks: shared: ipv4_address: 10.10.10.92 depends_on: - - wait-for-it - - wait-for-it: - build: - context: ./docker/wait-for-it - dockerfile: Dockerfile - command: [ "./wait-for-it.sh", "localhost:9200" ] - container_name: wait-for-it - restart: on-failure - networks: - shared: - ipv4_address: 10.10.10.95 + - elasticsearch elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.15 diff --git a/docker/wait-for-it/Dockerfile b/docker/wait-for-it/Dockerfile deleted file mode 100644 index f1d23e1f..00000000 --- a/docker/wait-for-it/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM bash:5 - -COPY wait-for-it/wait-for-it.sh ./ diff --git a/docker/wait-for-it/wait-for-it b/packages/wait-for-it similarity index 100% rename from docker/wait-for-it/wait-for-it rename to packages/wait-for-it From c713059249c83cc44d718bfafab894f9d5b9b46b Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 15:35:00 +0200 Subject: [PATCH 3/6] Remove the wait-for-it subpackage. --- .gitmodules | 6 ------ packages/wait-for-it | 1 - 2 files changed, 7 deletions(-) delete mode 100644 .gitmodules delete mode 160000 packages/wait-for-it diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ea466871..00000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "docker/wait-for-it/wait-for-it"] - path = docker/wait-for-it/wait-for-it - url = https://github.com/vishnubob/wait-for-it.git -[submodule "packages/wait-for-it"] - path = packages/wait-for-it - url = https://github.com/vishnubob/wait-for-it.git diff --git a/packages/wait-for-it b/packages/wait-for-it deleted file mode 160000 index 81b1373f..00000000 --- a/packages/wait-for-it +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 81b1373f17855a4dc21156cfe1694c31d7d1792e From 69a30628b1104e9c774f636cbe0987b6a9e67320 Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 16:02:48 +0200 Subject: [PATCH 4/6] Use a simpler wait_to_start script. --- docker-compose.jaeger.yml | 16 ++++++++++++---- packages/wait_to_start/wait_to_start.sh | 23 +++++++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100755 packages/wait_to_start/wait_to_start.sh diff --git a/docker-compose.jaeger.yml b/docker-compose.jaeger.yml index 3a1c29dc..40392ced 100644 --- a/docker-compose.jaeger.yml +++ b/docker-compose.jaeger.yml @@ -33,7 +33,7 @@ services: jaeger-collector: image: jaegertracing/jaeger-collector - command: [ "/wait-for-it/wait-for-it.sh", "elasticsearch:9200", "--", "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] + entrypoint: /wait_to_start/wait_to_start.sh container_name: jaeger-collector restart: on-failure expose: @@ -43,8 +43,12 @@ services: environment: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug + - WAIT_START_CMD=/go/bin/collector-linux --es.num-shards=1 --es.num-replicas=0 --es.server-urls=http://elasticsearch:9200 + - WAIT_COMMAND=wget -O index.html http://elasticsearch:9200 + - WAIT_SLEEP=1 + - WAIT_LOOPS=600 volumes: - - ./packages/wait-for-it:/wait-for-it + - ./packages/wait_to_start:/wait_to_start networks: shared: ipv4_address: 10.10.10.91 @@ -53,7 +57,7 @@ services: jaeger-query: image: jaegertracing/jaeger-query - command: [ "/wait-for-it/wait-for-it.sh", "elasticsearch:9200", "--", "--es.num-shards=1", "--es.num-replicas=0", "--es.server-urls=http://elasticsearch:9200" ] + entrypoint: /wait_to_start/wait_to_start.sh container_name: jaeger-query restart: on-failure ports: @@ -63,8 +67,12 @@ services: environment: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug + - WAIT_START_CMD=/go/bin/query-linux --es.num-shards=1 --es.num-replicas=0 --es.server-urls=http://elasticsearch:9200 + - WAIT_COMMAND=wget -O index.html http://elasticsearch:9200 + - WAIT_SLEEP=1 + - WAIT_LOOPS=600 volumes: - - ./packages/wait-for-it:/wait-for-it + - ./packages/wait_to_start:/wait_to_start networks: shared: ipv4_address: 10.10.10.92 diff --git a/packages/wait_to_start/wait_to_start.sh b/packages/wait_to_start/wait_to_start.sh new file mode 100755 index 00000000..c56d273f --- /dev/null +++ b/packages/wait_to_start/wait_to_start.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +echo $WAIT_COMMAND +echo $WAIT_START_CMD + +is_ready() { + eval "$WAIT_COMMAND" +} + +# wait until is ready +i=0 +while ! is_ready; do + i=`expr $i + 1` + if [ $i -ge $WAIT_LOOPS ]; then + echo "$(date) - still not ready, giving up" + exit 1 + fi + echo "$(date) - waiting to be ready" + sleep $WAIT_SLEEP +done + +#start the script +exec $WAIT_START_CMD From 0adb7d8e7e6fbcc2b5e0bec7ef11a5a24067a0f6 Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 16:07:51 +0200 Subject: [PATCH 5/6] Silence the output. --- docker-compose.jaeger.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.jaeger.yml b/docker-compose.jaeger.yml index 40392ced..ea192b9d 100644 --- a/docker-compose.jaeger.yml +++ b/docker-compose.jaeger.yml @@ -44,7 +44,7 @@ services: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug - WAIT_START_CMD=/go/bin/collector-linux --es.num-shards=1 --es.num-replicas=0 --es.server-urls=http://elasticsearch:9200 - - WAIT_COMMAND=wget -O index.html http://elasticsearch:9200 + - WAIT_COMMAND=wget -qO index.html http://elasticsearch:9200 - WAIT_SLEEP=1 - WAIT_LOOPS=600 volumes: @@ -68,7 +68,7 @@ services: - SPAN_STORAGE_TYPE=elasticsearch - LOG_LEVEL=debug - WAIT_START_CMD=/go/bin/query-linux --es.num-shards=1 --es.num-replicas=0 --es.server-urls=http://elasticsearch:9200 - - WAIT_COMMAND=wget -O index.html http://elasticsearch:9200 + - WAIT_COMMAND=wget -qO index.html http://elasticsearch:9200 - WAIT_SLEEP=1 - WAIT_LOOPS=600 volumes: From 07ba3f8e3bf9ce1cbe8683925edae27d0e58fbb4 Mon Sep 17 00:00:00 2001 From: Ivaylo Novakov Date: Tue, 11 May 2021 16:42:37 +0200 Subject: [PATCH 6/6] Move the script to the scripts dir. --- docker-compose.jaeger.yml | 8 ++++---- {packages/wait_to_start => scripts}/wait_to_start.sh | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename {packages/wait_to_start => scripts}/wait_to_start.sh (100%) diff --git a/docker-compose.jaeger.yml b/docker-compose.jaeger.yml index ea192b9d..a12966b1 100644 --- a/docker-compose.jaeger.yml +++ b/docker-compose.jaeger.yml @@ -33,7 +33,7 @@ services: jaeger-collector: image: jaegertracing/jaeger-collector - entrypoint: /wait_to_start/wait_to_start.sh + entrypoint: /wait_to_start.sh container_name: jaeger-collector restart: on-failure expose: @@ -48,7 +48,7 @@ services: - WAIT_SLEEP=1 - WAIT_LOOPS=600 volumes: - - ./packages/wait_to_start:/wait_to_start + - ./scripts/wait_to_start.sh:/wait_to_start.sh:ro networks: shared: ipv4_address: 10.10.10.91 @@ -57,7 +57,7 @@ services: jaeger-query: image: jaegertracing/jaeger-query - entrypoint: /wait_to_start/wait_to_start.sh + entrypoint: /wait_to_start.sh container_name: jaeger-query restart: on-failure ports: @@ -72,7 +72,7 @@ services: - WAIT_SLEEP=1 - WAIT_LOOPS=600 volumes: - - ./packages/wait_to_start:/wait_to_start + - ./scripts/wait_to_start.sh:/wait_to_start.sh:ro networks: shared: ipv4_address: 10.10.10.92 diff --git a/packages/wait_to_start/wait_to_start.sh b/scripts/wait_to_start.sh similarity index 100% rename from packages/wait_to_start/wait_to_start.sh rename to scripts/wait_to_start.sh