HAProxy inside Docker: getting the logs

The official HAProxy docker image does not really offer an out-of-the-box way to get to HAProxy's logs other than sending it to a remote log server. Sending log messages to stdout/stderr so you can view the logs with docker logs does not appear to be possible with HAProxy.

Exposing /dev/log on docker command line

To get access to the logs, without having to set up a service to receive them, you can choose to grant the container read-write access to the host's /dev/log.

docker run -v /dev/log:/dev/log:rw haproxy`

Then, make sure you set logging towards /dev/log in haproxy.cfg, like so:

global
  log /dev/log  local0
  log /dev/log  local1 notice

Exposing /dev/log in docker-compose YAML

In your docker-compose YAML, you can add the volume for /dev/log as follows:

services:
  haproxy:
    image: haproxy:alpine
    volumes:
      - /dev/log:/dev/log:rw

Accessing the logs

With the above examples, the HAProxy logs should now be available on your host machine, simply run journalctl -f there to see them pass by.

There is, of course, a probability that I missed a way to get to the logs other than sending them to a remote syslog service, but my droplet at Digital Ocean is only so large, and I intend to stay within my budget... Please let me know in the comments below if there is a better way to get to the logs.