|
|
@@ -0,0 +1,131 @@
|
|
|
+---
|
|
|
+services:
|
|
|
+ {{ service_name }}:
|
|
|
+ image: ghcr.io/mend/renovate-ce:10.5.0-full
|
|
|
+ {% if not swarm_enabled %}
|
|
|
+ container_name: {{ container_name }}
|
|
|
+ restart: {{ restart_policy }}
|
|
|
+ {% endif %}
|
|
|
+ hostname: {{ container_hostname }}
|
|
|
+ {% if not traefik_enabled and network_mode == 'bridge' %}
|
|
|
+ ports:
|
|
|
+ - "{{ ports_http }}:8080"
|
|
|
+ {% endif %}
|
|
|
+ env_file:
|
|
|
+ - ./.env
|
|
|
+ {% if swarm_enabled %}
|
|
|
+ secrets:
|
|
|
+ - source: {{ license_key_secret_name }}
|
|
|
+ target: /run/secrets/{{ license_key_secret_name }}
|
|
|
+ mode: 0400
|
|
|
+ - source: {{ git_token_secret_name }}
|
|
|
+ target: /run/secrets/{{ git_token_secret_name }}
|
|
|
+ mode: 0400
|
|
|
+ {% if webhook_secret %}
|
|
|
+ - source: {{ webhook_secret_name }}
|
|
|
+ target: /run/secrets/{{ webhook_secret_name }}
|
|
|
+ mode: 0400
|
|
|
+ {% endif %}
|
|
|
+ deploy:
|
|
|
+ mode: {{ swarm_placement_mode }}
|
|
|
+ {% if swarm_placement_mode == 'replicated' %}
|
|
|
+ replicas: {{ swarm_replicas }}
|
|
|
+ {% endif %}
|
|
|
+ {% if swarm_placement_host %}
|
|
|
+ placement:
|
|
|
+ constraints:
|
|
|
+ - node.hostname == {{ swarm_placement_host }}
|
|
|
+ {% endif %}
|
|
|
+ {% if traefik_enabled %}
|
|
|
+ labels:
|
|
|
+ - traefik.enable=true
|
|
|
+ - traefik.http.services.{{ service_name }}.loadbalancer.server.port=8080
|
|
|
+ - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}`)
|
|
|
+ - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
|
|
|
+ {% if traefik_tls_enabled %}
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}`)
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.tls=true
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
|
|
|
+ {% endif %}
|
|
|
+ {% endif %}
|
|
|
+ {% else %}
|
|
|
+ {% if traefik_enabled %}
|
|
|
+ labels:
|
|
|
+ - traefik.enable=true
|
|
|
+ - traefik.http.services.{{ service_name }}.loadbalancer.server.port=8080
|
|
|
+ - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}`)
|
|
|
+ - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
|
|
|
+ {% if traefik_tls_enabled %}
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}`)
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.tls=true
|
|
|
+ - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
|
|
|
+ {% endif %}
|
|
|
+ {% endif %}
|
|
|
+ {% endif %}
|
|
|
+ {% if network_mode == 'host' %}
|
|
|
+ network_mode: host
|
|
|
+ {% else %}
|
|
|
+ networks:
|
|
|
+ {% if traefik_enabled %}
|
|
|
+ {{ traefik_network }}:
|
|
|
+ {% endif %}
|
|
|
+ {% if network_mode == 'macvlan' %}
|
|
|
+ {{ network_name }}:
|
|
|
+ ipv4_address: {{ network_macvlan_ipv4_address }}
|
|
|
+ {% elif network_mode == 'bridge' %}
|
|
|
+ {{ network_name }}:
|
|
|
+ {% endif %}
|
|
|
+ {% endif %}
|
|
|
+ healthcheck:
|
|
|
+ test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
|
+ interval: 30s
|
|
|
+ timeout: 10s
|
|
|
+ retries: 3
|
|
|
+ start_period: 40s
|
|
|
+
|
|
|
+{% if swarm_enabled %}
|
|
|
+secrets:
|
|
|
+ {{ license_key_secret_name }}:
|
|
|
+ file: ./.env.secret.license
|
|
|
+ {{ git_token_secret_name }}:
|
|
|
+ file: ./.env.secret.token
|
|
|
+ {% if webhook_secret %}
|
|
|
+ {{ webhook_secret_name }}:
|
|
|
+ file: ./.env.secret.webhook
|
|
|
+ {% endif %}
|
|
|
+{% endif %}
|
|
|
+
|
|
|
+{% if network_mode != 'host' %}
|
|
|
+networks:
|
|
|
+ {% if network_mode == 'macvlan' %}
|
|
|
+ {{ network_name }}:
|
|
|
+ {% if network_external %}
|
|
|
+ external: true
|
|
|
+ {% else %}
|
|
|
+ driver: macvlan
|
|
|
+ driver_opts:
|
|
|
+ parent: {{ network_macvlan_parent_interface }}
|
|
|
+ ipam:
|
|
|
+ config:
|
|
|
+ - subnet: {{ network_macvlan_subnet }}
|
|
|
+ gateway: {{ network_macvlan_gateway }}
|
|
|
+ name: {{ network_name }}
|
|
|
+ {% endif %}
|
|
|
+ {% elif network_mode == 'bridge' and network_external %}
|
|
|
+ {{ network_name }}:
|
|
|
+ external: true
|
|
|
+ {% elif network_mode == 'bridge' and not network_external %}
|
|
|
+ {{ network_name }}:
|
|
|
+ {% if swarm_enabled %}
|
|
|
+ driver: overlay
|
|
|
+ attachable: true
|
|
|
+ {% else %}
|
|
|
+ driver: bridge
|
|
|
+ {% endif %}
|
|
|
+ {% endif %}
|
|
|
+ {% if traefik_enabled %}
|
|
|
+ {{ traefik_network }}:
|
|
|
+ external: true
|
|
|
+ {% endif %}
|