version: '3.8' networks: {% if shinyproxy_container_backend == 'docker-swarm' and shinyproxy_docker_swarm_behind_haproxy %} haproxy-public: external: true {% endif %} {{ shinyproxy_docker_network }}: {% if not shinyproxy_docker_mount_conf_file %} configs: shinyproxy_conf: file: {{ shinyproxy_as_docker_src_dir }}/application.yml {% endif %} services: shinyproxy: {% if shinyproxy_container_backend == 'docker' %} build: . ports: - target: {{ shinyproxy_http_port }} published: {{ shinyproxy_http_port }} protocol: tcp mode: '{{ shinyproxy_docker_http_port_mode }}' {% if shinyproxy_expose_prometheus and shinyproxy_version is version_compare('2.5.0', '>=') %} - target: 9090 published: {{ shinyproxy_prometheus_port }} protocol: tcp mode: '{{ shinyproxy_docker_http_port_mode }}' {% endif %} {% else %} image: {{ shinyproxy_docker_image }} {% if not shinyproxy_docker_swarm_behind_haproxy %} ports: - target: {{ shinyproxy_http_port }} published: {{ shinyproxy_http_port }} protocol: tcp mode: 'ingress' {% if shinyproxy_expose_prometheus and shinyproxy_version is version_compare('2.5.0', '>=') %} - target: 9090 published: {{ shinyproxy_prometheus_port }} protocol: tcp mode: 'ingress' {% endif %} {% endif %} {% endif %} volumes: - /var/run/docker.sock:/var/run/docker.sock {% if shinyproxy_docker_mount_conf_file %} - {{ shinyproxy_as_docker_src_dir }}/application.yml:{{ shinyproxy_conf_dir }}/application.yml {% endif %} {% if not shinyproxy_docker_mount_conf_file %} configs: - source: shinyproxy_conf target: {{ shinyproxy_conf_dir }}/application.yml mode: 0400 {% endif %} networks: - {{ shinyproxy_docker_network }} {% if shinyproxy_container_backend == 'docker-swarm' and shinyproxy_docker_swarm_behind_haproxy %} - haproxy-public {% endif %} {% if shinyproxy_container_backend == 'docker-swarm' %} deploy: mode: replicated replicas: {{ shinyproxy_docker_swarm_replicas }} {% if shinyproxy_docker_swarm_behind_haproxy %} endpoint_mode: dnsrr {% endif %} placement: constraints: [node.role == manager] restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 120s {% endif %} {% if shinyproxy_docker_log_to_journal %} logging: driver: 'journald' {% endif %}