90 lines
4.4 KiB
YAML
Raw Normal View History

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 }}:
# FIXME Docker Hub image name with or without slash? FIXME
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 %}
ulimits:
nproc: ${ULIMIT_NPROC-65535}
nofile:
soft: ${ULIMIT_NPROC-65535}
hard: ${ULIMIT_NPROC-65535}
extends:
2023-10-13 01:13:24 +02:00
file: common-settings.yaml
service: common-settings
ports:
# - "8080:80"
volumes:
# When changing bind mount locations to real ones remember to
# also update "Initial setup" section in README.md.
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/{{ component }}/data/db:/usr/lib/{{ component }}
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/{{ component }}/data/logs:/var/log/{{ component }}
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${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 }}:
# FIXME Docker Hub image name with or without slash? FIXME
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:
ulimits:
nproc: ${ULIMIT_NPROC-65535}
nofile:
soft: ${ULIMIT_NPROC-65535}
hard: ${ULIMIT_NPROC-65535}
extends:
2023-10-13 01:13:24 +02:00
file: common-settings.yaml
service: common-settings
ports:
# - "8080:80"
volumes:
# When changing bind mount locations to real ones remember to
# also update "Initial setup" section in README.md.
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/{{ cookiecutter.__service_slug }}/data/db:/usr/lib/{{ cookiecutter.__service_slug }}
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/{{ cookiecutter.__service_slug }}/data/logs:/var/log/{{ cookiecutter.__service_slug }}
# - /opt/docker-data/{{ cookiecutter.__service_slug }}-${CONTEXT}/{{ cookiecutter.__service_slug }}/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: ${SUBNET}