This image is generic, thus you can obviously re-use it within your non-related EEA projects.
- Debian: Buster
- HAProxy: 1.8
- Expose: 5000
:latest
Dockerfile - Debian: Buster, HAProxy: 1.8
:1.8-1.8
Dockerfile - HAProxy: 1.8.31 Release: 1.8:1.8-1.7
Dockerfile - HAProxy: 1.8.30 Release: 1.7:1.8-1.6
Dockerfile - HAProxy: 1.8.29 Release: 1.6:1.8-1.5
Dockerfile - HAProxy: 1.8.22 Release: 1.5
See older versions
- Install Docker
- Install Docker Compose.
Here is a basic example of a docker-compose.yml
file using the eeacms/haproxy
docker image:
version: "2"
services:
haproxy:
image: eeacms/haproxy
depends_on:
- webapp
ports:
- "80:5000"
- "1936:1936"
environment:
BACKENDS: "webapp"
DNS_ENABLED: "true"
LOG_LEVEL: "info"
webapp:
image: eeacms/hello
The application can be scaled to use more server instances, with docker-compose scale
:
$ docker-compose up -d --scale webapp=4
The results can be checked in a browser, navigating to http://localhost.
By refresing the page multiple times it is noticeable that the IP of the server
that served the page changes, as HAProxy switches between them.
The stats page can be accessed at http://localhost:1936 where you have to log in
using the STATS_AUTH
authentication details (default admin:admin
).
Note that it may take up to one minute until backends are plugged-in due to the
minimum possible DNS_TTL
.
$ docker run --env BACKENDS="192.168.1.5:80 192.168.1.6:80" eeacms/haproxy
Using the BACKENDS
variable is a way to quick-start the container.
The servers are written as server_ip:server_listening_port
,
separated by spaces (and enclosed in quotes, to avoid issues).
The contents of the variable are evaluated in a python script that writes
the HAProxy configuration file automatically.
If there are multiple DNS records for one or more of your BACKENDS
(e.g. when deployed using rancher-compose),
you can use DNS_ENABLED
environment variable. This way, haproxy will load-balance
all of your backends instead of only the first entry found:
$ docker run --link=webapp -e BACKENDS="webapp" -e DNS_ENABLED=true eeacms/haproxy
$ docker run -v conf.d/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg eeacms/haproxy:latest
If you edit haproxy.cfg
you can reload it without having to restart the container:
$ docker exec <name-of-your-container> reload
Additionally, you can supply your own static haproxy.cfg
file by extending the image
FROM eeacms/haproxy:latest
COPY conf.d/haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
RUN apt-get install...
and then run
$ docker build -t your-image-name:your-image-tag path/to/Dockerfile