Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ ENV ALLOW_RESTARTS=0 \
SYSTEM=0 \
TASKS=0 \
VERSION=1 \
VOLUMES=0
VOLUMES=0 \
TIMEOUT_HTTP_REQUEST=10s \
TIMEOUT_QUEUE=1m \
TIMEOUT_CONNECT=10s \
TIMEOUT_CLIENT=10m \
TIMEOUT_SERVER=10m
COPY docker-entrypoint.sh /usr/local/bin/
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg.template
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,29 @@ extremely critical but can expose some information that your service does not ne
- `TASKS`
- `VOLUMES`

##### Timeout Configuration

The Docker Socket Proxy allows configuration of various timeouts using environment variables. These timeouts control how long HAProxy waits for certain events before taking action. You can set these environment variables when running the Docker container to override the default values. Click each entry in the list to read the appropriate HAProxy Documentation.

- [`TIMEOUT_HTTP_REQUEST`](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#timeout%20http-request): Maximum time to wait for a complete HTTP request. Default is `10s`.
- [`TIMEOUT_QUEUE`](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#timeout%20queue): Maximum time a request can remain in the queue. Default is `1m`.
- [`TIMEOUT_CONNECT`](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#timeout%20connect): Maximum time to wait for a connection attempt to a backend server. Default is `10s`.
- [`TIMEOUT_CLIENT`](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#timeout%20client): Maximum inactivity time on the client side. Default is `10m`.
- [`TIMEOUT_SERVER`](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#timeout%20server): Maximum inactivity time on the server side. Default is `10m`.

To set these timeouts, you can pass them as environment variables when starting the Docker container. For example:

```
docker container run \
-d --privileged \
--name dockerproxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 127.0.0.1:2375:2375 \
-e TIMEOUT_HTTP_REQUEST=15s \
-e TIMEOUT_QUEUE=2m \
tecnativa/docker-socket-proxy
```

## Use a different Docker socket location

If your OS stores its Docker socket in a different location and you are unable to bind
Expand Down
20 changes: 13 additions & 7 deletions docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,25 @@ case "$DISABLE_IPV6_LOWER" in
esac

# Process the HAProxy configuration template using sed
sed "s/\${BIND_CONFIG}/$BIND_CONFIG/g" /usr/local/etc/haproxy/haproxy.cfg.template > /usr/local/etc/haproxy/haproxy.cfg
sed -e "s|\${BIND_CONFIG}|$BIND_CONFIG|g" \
-e "s|\${TIMEOUT_HTTP_REQUEST}|$TIMEOUT_HTTP_REQUEST|g" \
-e "s|\${TIMEOUT_QUEUE}|$TIMEOUT_QUEUE|g" \
-e "s|\${TIMEOUT_CONNECT}|$TIMEOUT_CONNECT|g" \
-e "s|\${TIMEOUT_CLIENT}|$TIMEOUT_CLIENT|g" \
-e "s|\${TIMEOUT_SERVER}|$TIMEOUT_SERVER|g" \
/usr/local/etc/haproxy/haproxy.cfg.template > /usr/local/etc/haproxy/haproxy.cfg

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- haproxy "$@"
set -- haproxy "$@"
fi

if [ "$1" = 'haproxy' ]; then
shift # "haproxy"
# if the user wants "haproxy", let's add a couple useful flags
# -W -- "master-worker mode" (similar to the old "haproxy-systemd-wrapper"; allows for reload via "SIGUSR2")
# -db -- disables background mode
set -- haproxy -W -db "$@"
shift # "haproxy"
# if the user wants "haproxy", let's add a couple useful flags
# -W -- "master-worker mode" (similar to the old "haproxy-systemd-wrapper"; allows for reload via "SIGUSR2")
# -db -- disables background mode
set -- haproxy -W -db "$@"
fi

exec "$@"
10 changes: 5 additions & 5 deletions haproxy.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ defaults
option http-server-close
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 10m
timeout server 10m
timeout http-request ${TIMEOUT_HTTP_REQUEST}
timeout queue ${TIMEOUT_QUEUE}
timeout connect ${TIMEOUT_CONNECT}
timeout client ${TIMEOUT_CLIENT}
timeout server ${TIMEOUT_SERVER}
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
Expand Down