diff --git a/docker-compose/examples/grafana/docker-compose.yml b/docker-compose/examples/grafana/docker-compose.yml index 8be8499..c2fb650 100644 --- a/docker-compose/examples/grafana/docker-compose.yml +++ b/docker-compose/examples/grafana/docker-compose.yml @@ -5,6 +5,9 @@ services: networks: grafana-default: profiles: ["full", "grafana"] + depends_on: + nginx: + condition: service_healthy extends: file: common-settings.yml service: common-settings @@ -23,6 +26,12 @@ services: networks: grafana-default: profiles: ["full", "nginx"] + healthcheck: + test: ["CMD", "fping", "--count=1", "${GRAFANA_VIP}", "--period=500", "--quiet"] + interval: 3s + timeout: 1s + retries: 60 + start_period: 2s extends: file: common-settings.yml service: common-settings diff --git a/docker-compose/examples/grafana/env/fully.qualified.domain.name.example b/docker-compose/examples/grafana/env/fqdn_context.env.example similarity index 96% rename from docker-compose/examples/grafana/env/fully.qualified.domain.name.example rename to docker-compose/examples/grafana/env/fqdn_context.env.example index b482555..e7d7042 100644 --- a/docker-compose/examples/grafana/env/fully.qualified.domain.name.example +++ b/docker-compose/examples/grafana/env/fqdn_context.env.example @@ -6,6 +6,7 @@ CONTEXT=cncf # --- # GRAFANA_VERSION=x.y.z # NGINX_VERSION=x.y.z +# GRAFANA_VIP=10.1.1.2 diff --git a/docker-compose/examples/hashicorpvault/env/fqdn_context.env.example b/docker-compose/examples/hashicorpvault/env/fqdn_context.env.example index dd4646f..7604081 100644 --- a/docker-compose/examples/hashicorpvault/env/fqdn_context.env.example +++ b/docker-compose/examples/hashicorpvault/env/fqdn_context.env.example @@ -5,6 +5,7 @@ CONTEXT=fsf # Set something sensible here and uncomment # --- # VAULT_VERSION=x.y.z +# VAULT_VIP=10.1.1.2 diff --git a/docker-compose/{{ cookiecutter.__project_slug }}/docker-compose.yml b/docker-compose/{{ cookiecutter.__project_slug }}/docker-compose.yml index 3be4ce4..f254c24 100644 --- a/docker-compose/{{ cookiecutter.__project_slug }}/docker-compose.yml +++ b/docker-compose/{{ cookiecutter.__project_slug }}/docker-compose.yml @@ -1,6 +1,15 @@ services: {%- if ',' in cookiecutter.__component_list_slug -%} {%- set components = cookiecutter.__component_list_slug.split(',') -%} +{%- set ns = namespace(found=false) -%} +{%- for component in components %} + {%- if loop.first -%} + {%- set ns.first_component = component -%} + {%- elif N is undefined -%} + {%- set ns.second_component = component -%} + {%- set N = 0 -%} + {%- endif -%} +{%- endfor -%} {%- for component in components %} {{ component }}: image: "{{ component }}:${% raw %}{{% endraw %}{{ component.upper() }}_VERSION{% raw %}}{% endraw %}" @@ -8,6 +17,18 @@ services: networks: {{ cookiecutter.__service_slug }}-default: profiles: ["full", "{{ component }}"] + {% if loop.first -%} + depends_on: + {{ ns.second_component }}: + condition: service_healthy + {%- else -%} + healthcheck: + test: ["CMD", "fping", "--count=1", "${% raw %}{{% endraw %}{{ ns.first_component.upper() }}_VIP{% raw %}}{% endraw %}", "--period=500", "--quiet"] + interval: 3s + timeout: 1s + retries: 60 + start_period: 2s + {%- endif %} extends: file: common-settings.yml service: common-settings diff --git a/docker-compose/{{ cookiecutter.__project_slug }}/env/fqdn_context.env.example b/docker-compose/{{ cookiecutter.__project_slug }}/env/fqdn_context.env.example index fc0b853..969b44a 100644 --- a/docker-compose/{{ cookiecutter.__project_slug }}/env/fqdn_context.env.example +++ b/docker-compose/{{ cookiecutter.__project_slug }}/env/fqdn_context.env.example @@ -8,6 +8,11 @@ CONTEXT={{ cookiecutter.__context_slug }} {% for component in components %} # {{ component.upper() }}_VERSION=x.y.z {%- endfor %} +{%- for component in components %} +{%- if loop.first %} +# {{ component.upper() }}_VIP=10.1.1.2 +{%- endif %} +{%- endfor %}