Sign inSign up

smebberson/alpine-nginx

By smebberson

•Updated about 10 years ago

Alpine Linux, s6 process management running nginx. Super small and super fast.

Image
38

100K+

smebberson/alpine-nginx repository overview

⁠alpine-nginx

A Docker image for running nginx⁠, based on Alpine Linux. This image belongs to a suite of images documented here⁠.

⁠Features

This image features:

⁠Versions

See VERSIONS.md for image contents.⁠

⁠Usage

To use this image include FROM smebberson/alpine-nginx at the top of your Dockerfile, or simply docker run -p 80:80 -p 443:443 --name nginx smebberson/alpine-nginx.

Nginx logs (access and error logs) aren't automatically streamed to stdout and stderr. To review the logs, you can do one of two things:

Run the following in another terminal window:

docker exec -i nginx tail -f /var/log/nginx/access.log -f /var/log/nginx/error.log

or, in your Dockerfile symlink the Nginx logs to stdout and stderr:

RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
    ln -sf /dev/stderr /var/log/nginx/error.log

⁠Customisation

This container comes setup as follows:

  • s6 will automatically start nginx for you.
  • If nginx dies, so will the container.
  • A basic nginx configuration and a simple default HTML file.
⁠HTML content

To alter the HTML content that nginx serves up (add your website files), add the following to your Dockerfile:

ADD /path/to/content /usr/html/

index.html is the default, but that's easily changed (see below).

⁠Nginx configuration

A basic nginx configuration is supplied with this image. But it's easy to overwrite:

  • Create your own nginx.conf.
  • In your Dockerfile, make sure your nginx.conf file is copied to /etc/nginx/nginx.conf.

Make sure you start nginx without daemon mode, by including daemon off; in your nginx configuration, otherwise the container will constantly exit right after nginx starts.

⁠Restarting nginx

If you're running another process to keep track of something down-stream (for example, automatically updating nginx⁠ proxy settings when a down-stream application server (nodejs, php, etc) restarts) execute the command s6-svc -h /var/run/s6/services/nginx to send a SIGHUP to nginx and have it reload its configuration, launch new worker process(es) using this new configuration, while gracefully shutting down the old worker processes.

⁠nginx crash

By default, if nginx crashes, the container will stop. This has been configured within root/etc/services.d/nginx/finish. This is so the host machine can handle any issues, and automatically restart it (the docker way, docker run --autorestart).

If you don't want this to happen, simply replace the root/etc/services.d/nginx/finish with a different file in your image. I like to ln -s /bin/true /root/etc/services.d/nginx/finish in those instances in which you don't need a finish script and want to have the service restarted by s6.

⁠Nginx configuration

If you need to, you can run a setup script before starting nginx. During your Dockerfile build process, copy across a file to /etc/services.d/nginx/run with the following (or customise it as required):

#!/usr/bin/with-contenv sh

if [ -e ./setup ]; then
./setup
fi

# Start nginx.
nginx -g "daemon off;"

⁠Example

An example of using this image can be found in examples/user-nginx⁠.

Tag summary

Content type

Image

Digest

sha256:8d4b5375e…

Size

6.7 MB

Last updated

about 10 years ago

docker pull smebberson/alpine-nginx