<p>I have multiple microservices running on my AWS ECS Fargate cluster. Inside a task (pod), there will be multiple containers (1 container for core-business service and additional 3 sidecar containers). Here are the list of those containers:</p>
<ul>
<li>core-business service container (runs the core business service on specific port)</li>
<li>consul-agent container (runs consul-agent and joins it with the consul-master)</li>
<li>consul-template container (gets the service information from consul and updates the haproxy.cfg)</li>
<li>haproxy container (takes the haproxy.cfg from consul-template and runs)</li>
</ul>
<p>All these containers are up and running fine as well. The problem is to reload the haproxy. Since the consul-template is responsible for updating the haproxy.cfg file, Should I need to add some configuration on consul-template itself to update the haproxy?</p>
<p>Here is the command I am currently using for consul-template:</p>
<pre><code>consul-template -consul-addr=xx.xx.xx.xx:8500 -template /etc/consul-template/data/haproxy.cfg.ctmpl:/etc/consul-template/data/haproxy.cfg
</code></pre>
<p>What can I try to achieve this?</p>

Deependra Dangal
<p>I am currently having the exact same issue, but for Nginx.</p>
<p>From my research, there is no good solution.
The one that seems to work is to mount the volume</p>
<pre><code>-v /var/run/docker.sock:/var/run/docker.sock
</code></pre>
<p>on the consul-template container.</p>
<p>I see you are using :</p>
<pre><code>consul-template -consul-addr=xx.xx.xx.xx:8500 -template /etc/consul-template/data/haproxy.cfg.ctmpl:/etc/consul-template/data/haproxy.cfg
</code></pre>
<p>in order to run a command after the consul-template renders a new config file, use something like:</p>
<pre><code>consul-template -consul-addr=xx.xx.xx.xx:8500 -template /etc/consul-template/data/haproxy.cfg.ctmpl:/etc/consul-template/data/haproxy.cfg:docker run haproxy-container command-to-reload-haproxy
</code></pre>
<hr />
<p><strong>HINT</strong></p>
<p>I find it more readable to use consul-template config files, the language is very well specified here:
<a href="https://github.com/hashicorp/consul-template/blob/master/docs/configuration.md" rel="nofollow noreferrer">https://github.com/hashicorp/consul-template/blob/master/docs/configuration.md</a> .</p>
<p>Using that approach you would have a config file (for example consul_template_config.hcl) for consul-template like:</p>
<pre><code>consul {
  address = &quot;consul-address:8500&quot;
}

template {
  source = &quot;/etc/consul-template/data/haproxy.cfg.ctmpl&quot;
  destination = &quot;/etc/consul-template/data/haproxy.cfg&quot;
  command = &quot;docker run haproxy-container command-to-reload-haproxy&quot;
}
</code></pre>
<p>Then, you run the consul-template container using</p>
<pre><code>consul-template -config /path/to/consul_template_config.hcl
</code></pre>
<p>or using</p>
<pre><code>consul-template -config /path/to/folder/containing-&gt;consul_template_config.hcl (This approach is more advanced, and lets you have consul-template-configs across multiple files, and not only in 1 like consul_template_config.hcl)
</code></pre>
<p>I know it is not a good solution to use this docker volume (security warnings), but it was what I could find about our use case.</p>
