/h2o-proxy

Automated H2O reverse proxy for Docker containers. An alternative jwilder/nginx-proxy.

MIT LicenseMIT

h2o-proxy

Automated H2O reverse proxy for Docker containers. An alternative jwilder/nginx-proxy.

h2o-proxy sets up a container running H2O and docker-gen.
docker-gen generates reverse proxy configs for H2O and reloads H2O use start_server when containers are started and stopped.

Based FROM image is zchee/docker-h2o.

Install

Building docker container.

$ docker build -t zchee/h2o-proxy .

h2o-proxy now support the docker --build-arg new feature build flag.
If you use other versions docker-gen,

$ docker build -t zchee/h2o-proxy --build-arg DOCKER_GEN_VERSION=*.*.* .

Also, Change DOCKER_HOST env,

$ docker build -t zchee/h2o-proxy --build-arg DOCKER_HOST=/path/to/docker.sock .

If you installed docker version is not HEAD, type this command instead of.

$ docker build -t zchee/h2o-proxy -f Dockerfile.no-buildarg .

Usage

Edit host os's sysctl.conf.
e.g. zchee/docker-h2o/sysctl.conf.

To run it:

$ docker run -d -p 80:80 --net=host -v /var/run/docker.sock:/tmp/docker.sock:ro zchee/h2o-proxy

Then start any containers you want proxied with an env var VIRTUAL_HOST=subdomain.youdomain.com

$ docker run -e VIRTUAL_HOST=foo.bar.com  ...

Provided your DNS is setup to forward foo.bar.com to the a host running h2o-proxy, the request will be routed to a container with the VIRTUAL_HOST env var set.

If your are using boot2docker start h2o-proxy with:

$ $(boot2docker shellinit)
$ docker run -p 80:80 -e DOCKER_HOST -e DOCKER_CERT_PATH -e DOCKER_TLS_VERIFY -v $DOCKER_CERT_PATH:$DOCKER_CERT_PATH -it zchee/h2o-proxy

Depend packages

TODO

  • Support HTTP/2 Reverse Proxy ( Wait for the support of H2O )
  • Not dependent perl and Server::Starter
    • start_server use a included script in the H2O
  • reprioritize-blocking-assets ooptions