/docker-haproxy

Fully customisable HAProxy load balancer with HTTP/2 and ALPN support. Built on CentOS-7.

Primary LanguageShell

HAProxy Load Balancer

Build Status GitHub Open Issues
Stars Fork
Release

Docker build

Felling like supporting me in my projects use donate button. Thank You!

HAProxy docker container million12/haproxy with ALPN and HTTP/2 support.

Tags

Please specify tag when deploying for specific version.
Example:

million12/haproxy:latest
million12/haproxy:1.8.4

Features

  • Support for HTTP/2 with ALPN
  • CentOS 7 based
  • Ability to provide any arguments to haproxy process
    Any extra parameters provided to docker run will be passed directly to haproxy command.
    For example, if you run docker run [run options] million12/haproxy -n 1000 you pass -n 1000 to haproxy daemon.
  • Pretty lightweight, only ~100M (with OpenSSL and HAProxy compiled from source).
  • Default haproxy.cfg provided for demonstration purposes. You can easily mount your own or point to different location using HAPROXY_CONFIG env.
  • Auto restart when config changes
    This container comes with inotify to monitor changes in HAProxy config and reload HAProxy daemon. The reload is done in a way that no connection is lost.

ENV variables

Variable Default Settings Notes
HAPROXY_CONFIG /etc/haproxy/haproxy.cfg If you mount your config to different location, simply edit it.
HAPROXY_PORTS 80,443 Comma separated ports
HAPROXY_ADDITIONAL_CONFIG Empty List of file that inotify should monitor for changes divided by space. Example below. Space separated
HAPROXY_PRE_RESTART_CMD Empty Command to execute before restarting haproxy
HAPROXY_POST_RESTART_CMD Empty Command to execute after successfully restarting haproxy

Usage

Basic

docker run -ti \
  --cap-add NET_ADMIN \
  -p 80:80 \
  -p 443:443 \
  million12/haproxy

Mount custom config , override some options

docker run -d \
  --cap-add NET_ADMIN \
  -p 80:80 \
  -v /my-haproxy.cfg:/etc/haproxy/haproxy.cfg \
  million12/haproxy \
  -n 10000

Note: in this case config is mounted to its default location, so you don't need to modify HAPROXY_CONFIG variable.

Monitor additional config files

docker run -d \
  --cap-add NET_ADMIN \
  -p 80:80 \
  -e HAPROXY_ADDITIONAL_CONFIG='/etc/haproxy/custom1 /etc/haproxy/custom2' \
  million12/haproxy

Check version and build options

docker run -ti million12/haproxy -vv

Stats

The default URL for stats is http://CONTAINER_IP/admin?stats with username:password ser to admin:admin.

Authors

Author: Marcin ryzy Ryzycki (marcin@m12.io)
Author: Przemyslaw Ozgo (linux@ozgo.info)