.github/workflows | ||
bin | ||
docker | ||
static | ||
templates | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
CHANGELOG.md | ||
config.json | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
Makefile | ||
package.json | ||
README.md | ||
yarn.lock |
HTTP's error pages in Docker image
This repository contains:
- A very simple generator (
nodejs
) for HTTP error pages (like404: Not found
) with different templates supports - Dockerfile for docker image with generated pages and
nginx
as web server
Can be used for Traefik error pages customization.
Demo
Generated pages (from the latest release) always accessible here (sources) and on GitHub pages here.
Development
For project development we use
docker-ce
+docker-compose
. Make sure you have them installed.
Install nodejs
dependencies:
$ make install
If you want to generate error pages on your machine (after that look into output directory):
$ make gen
If you want to preview the pages using the Docker image:
$ make preview
Templates
Name | Preview |
---|---|
ghost |
Usage
Generated error pages in our docker image permanently located in directory /opt/html/%TEMPLATE_NAME%
. nginx
in a container listen for 8080
(http
) port.
Supported environment variables
Name | Description |
---|---|
TEMPLATE_NAME |
"default" pages template (allows to use error pages without passing theme name in URL - http://127.0.0.1/500.html instead http://127.0.0.1/ghost/500.html ) |
DEFAULT_ERROR_CODE |
(404 by default) Code with passed error code will be used as default (index) page (can be used only with TEMPLATE_NAME variable) |
HTTP server for error pages serving only
Execute in your shell:
$ docker run --rm -p "8082:8080" tarampampam/error-pages:1.1.0
And open in your browser http://127.0.0.1:8082/ghost/400.html
.
Custom error pages for nginx
You can build your own docker image with nginx
and our error pages:
# File `./nginx.conf`
server {
listen 80;
server_name localhost;
error_page 401 /_error-pages/401.html;
error_page 403 /_error-pages/403.html;
error_page 404 /_error-pages/404.html;
error_page 500 /_error-pages/500.html;
error_page 502 /_error-pages/502.html;
error_page 503 /_error-pages/503.html;
location ^~ /_error-pages/ {
internal;
root /usr/share/nginx/errorpages;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
FROM nginx:1.18-alpine
COPY --chown=nginx \
./nginx.conf /etc/nginx/conf.d/default.conf
COPY --chown=nginx \
--from=tarampampam/error-pages:1.1.0 \
/opt/html/ghost /usr/share/nginx/errorpages/_error-pages
More info about
error_page
directive can be found here.
Custom error pages for Traefik
Simple traefik (tested on v2.2.1
) service configuration for usage in docker swarm (change with your needs):
version: '3.8'
services:
error-pages:
image: tarampampam/error-pages:1.1.0
environment:
TEMPLATE_NAME: ghost
networks:
- traefik-public
deploy:
placement:
constraints:
- node.role == worker
max_replicas_per_node: 1
resources:
limits:
memory: 32M
reservations:
memory: 16M
labels:
- traefik.enable=true
- traefik.docker.network=traefik-public
- traefik.http.routers.error-pages-router.rule=HostRegexp(`{host:.+}`)
- traefik.http.routers.error-pages-router.tls=true
- traefik.http.routers.error-pages-router.priority=10
- traefik.http.routers.error-pages-router.entrypoints=https
- traefik.http.routers.error-pages-router.middlewares=error-pages-middleware@docker
- traefik.http.services.error-pages-service.loadbalancer.server.port=8080
- traefik.http.middlewares.error-pages-middleware.errors.status=400-599
- traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service@docker
- traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html
networks:
traefik-public:
external: true
Changes log
Changes log can be found here.
Support
If you will find any package errors, please, make an issue in current repository.
License
This is open-sourced software licensed under the MIT License.