This is a direct copy of https://github.com/wernight/docker-ngrok It's been copied to push to docker hub with tags rather than just using "latest" so clients can control the version which is pulled. A [Docker][docker] image for [ngrok][ngrok] v2, introspected tunnels to localhost. It's based on the excellent work of [wizardapps/ngrok][wizardapps/ngrok] and [fnichol/ngrok][fnichol/ngrok]. ## Features * **Small**: Built using [busybox][busybox]. * **Simple**: Just link as `http` or `https` in most cases, see below; exposes ngrok server `4040` port. * **Secure**: Runs as non-root user with a random UID `6737` (to avoid mapping to an existing UID). ## Configuration To see command-line options, run `docker run --rm wernight/ngrok ngrok --help`. ## Usage Supposing you've an Apache or Nginx Docker container named `web_service_container` listening on port 80: $ docker run --rm -it --link web_service_container wernight/ngrok ngrok http web_service_container:80 ### Environment variables *Please consider using directly the command-line arguments of Ngrok.* If you use the default `CMD` (i.e. don't specify the ngrok command-line but only `wernight/ngrok`), then you can use instead envrionment variables magic below. You simply have to link the Ngrok container to the application under the `app` or `http` or `https` aliases, and all of the configuration will be done for you by default. Additionally, you can specify one of several environment variable (via `-e`) to configure your Ngrok tunnel: * `NGROK_AUTH` - Authentication key for your Ngrok account. This is needed for custom subdomains, custom domains, and HTTP authentication. * `NGROK_SUBDOMAIN` - Name of the custom subdomain to use for your tunnel. You must also provide the authentication token. * `NGROK_HOSTNAME` - Paying Ngrok customers can specify a custom domain. Only one subdomain or domain can be specified, with the domain taking priority. * `NGROK_REMOTE_ADDR` - Name of the reserved TCP address to use for a TCP tunnel. You must also provide the authentication token. * `NGROK_USERNAME` - Username to use for HTTP authentication on the tunnel. You must also specify an authentication token. * `NGROK_PASSWORD` - Password to use for HTTP authentication on the tunnel. You must also specify an authentication token. * `NGROK_PROTOCOL` - Can either be `HTTP` or `TCP`, and it defaults to `HTTP` if not specified. If set to `TCP`, Ngrok will allocate a port instead of a subdomain and proxy TCP requests directly to your application. * `NGROK_PORT` - Port to expose (defaults to `80` for `HTTP` protocol). If the server is non-local, the hostname can also be specified, e.g. `192.168.0.102:80`. * `NGROK_REGION` - Location of the ngrok tunnel server; can be `us` (United States, default), `eu` (Europe), `ap` (Asia/Pacific) or `au` (Australia) * `NGROK_LOOK_DOMAIN` - This is the domain name referred to by ngrok. (default: localhost). * `NGROK_BINDTLS` - Toggle tunneling only HTTP or HTTPS traffic. When `true`, Ngrok only opens the HTTPS endpoint. When `false`, Ngrok only opens the HTTP endpoint * `NGROK_HEADER` - Rewrites the Host header for incoming HTTP requests to determine which development site to display. * `NGROK_DEBUG` - Toggle output of logs. When `true`, Ngrok will output logs to stdout. #### Full example 1. We'll set up a simple example HTTP server in a docker container named `www`: $ docker run -v /usr/share/nginx/html --name www_data busybox true $ docker run --rm --volumes-from www_data busybox /bin/sh -c 'echo "