A high-performance Nginx base image for Docker to serve static websites. It will serve anything in the /var/www
directory.
To build a Docker image for your site, you'll need to create a Dockerfile
. For example, if your site is in a directory called src/
, you could create this Dockerfile
:
FROM elsdoerfer/cra-nginx
COPY src/ /var/www
CMD 'nginx'
Then build and run it:
$ docker build -t mysite .
...
Successfully built 5ae2fb5cf4f8
$ docker run -p 80:80 -d mysite
da809981545f
$ curl localhost
...
The trusted build information can be found on the Docker Hub at https://hub.docker.com/r/elsdoerfer/cra-nginx.
To use SSL, put your certs in /etc/nginx/ssl
and enable the default-ssl
site:
ADD server.crt /etc/nginx/ssl/
ADD server.key /etc/nginx/ssl/
RUN ln -s /etc/nginx/sites-available/default-ssl /etc/nginx/sites-enabled/default-ssl
When you run it, you'll want to make port 443 available, e.g.:
$ docker run -p 80:80 -p 443:443 -d mysite
FALLTHROUGH
If this is set to any value, unknown urls will be served by /index.html
. This is useful if your
single page app uses browser routing.
The nginx.conf and mime.types are pulled with slight modifications from the h5bp Nginx HTTP server boilerplate configs project at https://github.com/h5bp/server-configs-nginx
To modify the NGINX config, you would just create a custom Dockerfile like the following where you copy in your modified config files.
# Guide here:
# https://github.com/KyleAMathews/docker-nginx
# Build docker file
# docker build -t CONTAINERNAME .
# Build from this repo's image
FROM elsdoerfer/cra-nginx
# Example if you wanna swap the default server file.
COPY path/to/your/default /etc/nginx/sites-enabled/default
# Add src.
COPY src/ /var/www
CMD 'nginx'