74 lines
3.6 KiB
YAML
74 lines
3.6 KiB
YAML
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 %}"
|
|
container_name: "{{ cookiecutter.__service_slug }}-{{ component }}-${CONTEXT}"
|
|
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
|
|
ports:
|
|
# - "8080:80"
|
|
volumes:
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-{{ component }}-${CONTEXT}/{{ component }}/data/db:/usr/lib/{{ component }}
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-{{ component }}-${CONTEXT}/{{ component }}/data/logs:/var/log/{{ component }}
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-{{ component }}-${CONTEXT}/{{ component }}/config:/etc/{{ component }}
|
|
environment:
|
|
# {{ component.upper() }}_USER: ${% raw %}{{% endraw %}{{ component.upper() }}_USER{% raw %}}{% endraw %}
|
|
# {{ component.upper() }}_PASSWORD: ${% raw %}{{% endraw %}{{ component.upper() }}_PASSWORD{% raw %}}{% endraw %}
|
|
{%- endfor -%}
|
|
{%- else %}
|
|
{{ cookiecutter.__component_list_slug }}:
|
|
image: "{{ cookiecutter.__component_list_slug }}:${% raw %}{{% endraw %}{{ cookiecutter.__component_list_slug.upper() }}_VERSION{% raw %}}{% endraw %}"
|
|
container_name: "{{ cookiecutter.__service_slug }}-${CONTEXT}"
|
|
networks:
|
|
{{ cookiecutter.__service_slug }}-default:
|
|
extends:
|
|
file: common-settings.yml
|
|
service: common-settings
|
|
ports:
|
|
# - "8080:80"
|
|
volumes:
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/data/db:/usr/lib/{{ cookiecutter.__service_slug }}
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/data/logs:/var/log/{{ cookiecutter.__service_slug }}
|
|
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/config:/etc/{{ cookiecutter.__service_slug }}
|
|
environment:
|
|
# {{ cookiecutter.__component_list_slug.upper() }}_USER: ${% raw %}{{% endraw %}{{ cookiecutter.__component_list_slug.upper() }}_USER{% raw %}}{% endraw %}
|
|
# {{ cookiecutter.__component_list_slug.upper() }}_PASSWORD: ${% raw %}{{% endraw %}{{ cookiecutter.__component_list_slug.upper() }}_PASSWORD{% raw %}}{% endraw %}
|
|
{%- endif %}
|
|
networks:
|
|
{{ cookiecutter.__service_slug }}-default:
|
|
name: {{ cookiecutter.__service_slug }}-${CONTEXT}
|
|
driver: bridge
|
|
driver_opts:
|
|
com.docker.network.enable_ipv6: "false"
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
# - subnet: 172.21.184.0/24
|