No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Abhinav Sarkar a1810b664b
Removes the line about static compilation
10 months ago
src Adds security headers in response 1 year ago
.gitignore Intial commit 1 year ago
Dockerfile Upgrades stackage lts and base image 11 months ago
LICENSE Intial commit 1 year ago
README.md Removes the line about static compilation 10 months ago
Setup.hs Intial commit 1 year ago
hastatic.cabal Upgrades stackage lts 1 year ago
package.yaml Updates version and stack LTS 10 months ago
stack.yaml Updates version and stack LTS 10 months ago

README.md

hastatic

Docker Build Status Docker Pulls MicroBadger Size

hastatic is a very small web server for serving static files from a Docker container.

Features

  • A lightweight web server, just 5 MB in size.
  • Built for Docker.
  • Supports HTTPS.
  • Supports custom 404 file.
  • Supports custom index files for URLs ending with “/”.
  • Takes care to not serve hidden files.
  • Adds caching headers automatically.
  • Adds security headers automatically.
  • Caches file descriptors and info for better performance.

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 .
$ # run with default configs
$ docker run -p 8080:3000 mywebsite
$ # run with custom configs
$ docker run -e PORT=2000 -e NF_FILE=404.html -e IDX_FILE=index.html -p 8080:2000 mywebsite
$ # run with HTTPS support
$ docker run -e TLS_CERT_FILE=certificate.pem -e TLS_KEY_FILE=key.pem -p 443:3000 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
  • TLS_CERT_FILE: TLS certification file, optional, required for HTTPS support
  • TLS_KEY_FILE: TLS key file, optional, required for HTTPS support

Internals

hastatic is written in Haskell, just 70 lines of it. It uses the excellent Warp server underneath with the warp-tls package for HTTPS support.