src | ||
.gitignore | ||
Dockerfile | ||
hastatic.cabal | ||
LICENSE | ||
package.yaml | ||
README.md | ||
Setup.hs | ||
stack.yaml |
hastatic
hastatic is a tiny static web server for Docker.
Features
- A tiny web server, just 3.5MB in size.
- Statically compiled binary with no dependencies.
- Built for Docker.
- Supports custom 404 file.
- Supports custom index files for URLs ending with "/".
- Takes care to not serve hidden files.
- Adds caching headers automatically.
- Does not support HTTPS. It is expected that you run it behind a reverse-proxy server with HTTPS support, like nginx.
Usage
Create a Dockerfile for your website, deriving from abhin4v/hastatic
:
FROM abhin4v/hastatic:latest
COPY mywebsite /opt/mywebsite
WORKDIR /opt/mywebsite
CMD ["/usr/bin/hastatic"]
Build and run:
$ docker build -t mywebsite .
$ docker run -p 8080:3000 mywebsite # run with default configs
$ docker run -e PORT=2000 -e NF_FILE=404.html -e IDX_FILE=index.html -p 8080:2000 mywebsite
Configuration
The Docker image supports these environment variable for configuration:
- PORT: the port to run the web server on, default: 3000
- NF_FILE: name of the custom 404 file, default:
404.html
- IDX_FILE: name of the custom index files, default:
index.html
Internals
hastatic is written in Haskell, just 30 lines of it. It uses the excellent Warp server underneath.