|Docker Hub tag||nginx release|
Differences from the official Docker image:
- Enables environment variable interpolation in config files (thanks to scripts taken from
- Provides a stable tag (the official Docker nginx image only provides the mainline/development version of nginx).
- Uses the Ubuntu PPA installation path, so there are some extra compiled modules available.
auto. This value should typically be set to the number of cores on the machine. Because the Debian/Ubuntu installers set this at install-time to a static value equal to the detected number of cores on the machine, many Docker images get this wrong.
automeans nginx will attempt to detect the number of cores when nginx starts up.
- Bypass copy-on-write (COW) filesystem for
/var/log/nginxdirectories. This should result in better write performance in the locations nginx modifies.
- Change default config to read configuration from
/datadirectories (see configuration section for more info).
$ docker run -d -p 8080:80 abevoelker/nginx $ curl -I http://localhost:8080 HTTP/1.1 200 OK Server: nginx/1.7.7 Date: Sun, 09 Nov 2014 03:44:27 GMT Content-Type: text/html Content-Length: 867 Last-Modified: Sun, 09 Nov 2014 03:38:48 GMT Connection: keep-alive ETag: "545ee1c8-363" Accept-Ranges: bytes
or, if you prefer the stable version of nginx:
$ docker run -d -p 8080:80 abevoelker/nginx:stable $ curl -I http://localhost:8080 HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Sun, 09 Nov 2014 03:45:35 GMT Content-Type: text/html Content-Length: 867 Last-Modified: Sun, 09 Nov 2014 03:42:09 GMT Connection: keep-alive ETag: "545ee291-363" Accept-Ranges: bytes
Site configuration files go in
$ ls /tmp/sites-enabled example.com $ docker run -v /tmp/sites-enabled:/data/sites-enabled:ro abevoelker/nginx
If you need environment variable interpolation in your site configs, put the files in
/data/sites-templates with a
.tmpl extension and they will be copied to
/data/sites-enabled/ with the
.tmpl extension removed. See
shepmaster/nginx-template-image for more info.
If you have a custom
nginx.conf, just mount it to
$ docker run -v /tmp/conf/my_nginx.conf:/data/conf/nginx.conf:ro abevoelker/nginx
If for some reason you don't want to store the file as
/data/conf/nginx.conf, you'll need to change the default run command to reference it:
$ docker run -v /tmp/foo:/foo abevoelker/nginx nginx -c /foo/nginx.conf
When rolling your own config, be sure to check out the
nginx.conf provided with this image for Docker-specific tweaks that may be helpful. And note that if you change the base image, it may not provide the
/dev/stderr special files.
.conf files go in
$ docker run -v /tmp/conf.d:/data/conf.d:ro abevoelker/nginx
Note that the default base
nginx.conf is configured to only include files in this directory with the suffix
There's a Makefile with
make build included as a shorthand for building the image. By default it will build the mainline version of nginx; if you prefer the stable version, do
make build VERSION=stable.
There are also
TAG variables available, so e.g.
make build REGISTRY=example.com TAG=foo will build the image
There's also a
make pull included as a shorthand for pulling the image. By default pulls the
latest tag but you can provide your own, e.g.
make pull TAG=stable.