GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - justcoded/dockerize-prerender

BranchesTags
Open more actions menu

Latest commit

 

History

17 Commits
17 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
docker-compose.example.yml
docker-compose.example.yml
 
 
package.json
package.json
 
 
server.js
server.js
 
 

Repository files navigation

Prerender Service (Dockerized)

This project provides a Dockerized prerender service based on prerender with an in-memory cache. It is designed to render JavaScript-heavy pages (e.g., for SEO or bots) using headless Chromium.

🚀 Features

  • Headless Chromium rendering
  • In-memory caching (prerender-memory-cache)
  • Configurable cache TTL and size
  • Lightweight Docker image (node:20-bullseye-slim)
  • Ready to use with Docker Compose

📦 Project Structure

├── Dockerfile

├── server.js

└── docker-compose.yml

⚙️ Configuration

Environment Variables

Variable Default Description
PORT 3000 Port the service listens on
CACHE_MAXSIZE 1000 Maximum number of cached entries
CACHE_TTL 43200 Cache lifetime in seconds (12 hour)
WAIT_AFTER_LAST_REQUEST 200 Wait time (ms) after last network request before rendering

🐳 Docker

Build Image

docker build -t prerender-service .

or check GitHub repository

ghcr.io/justcoded/dockerize-prerender:latest

with tag latest or number tag.

🧩 Docker Compose

Example docker-compose.yml for development:

services:
  webapp-prerender:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    shm_size: 1024mb
    restart: unless-stopped
    init: true
    environment:
      - PORT=3000
    # For qucker cahnges  
    volumes:
      - ./server.js:/app/server.js

or for prod/staging usage:

services:
  webapp-prerender:
    image: ghcr.io/justcoded/dockerize-prerender:latest
    shm_size: 1024mb
    restart: unless-stopped
    init: true
    environment:
      - PORT=3000
      # Maximum number of items to keep in the memory cache
      - CACHE_MAXSIZE=1000
      # Cache duration in seconds (43200s = 12 hours)
      - CACHE_TTL=43200
      # Wait time in ms after last network request before rendering
      - WAIT_AFTER_LAST_REQUEST=200
      

Run:

docker-compose up -d

🧠 How It Works

The service runs a prerender server using headless Chromium. Incoming requests are rendered as fully loaded HTML pages. Responses are cached in memory using prerender-memory-cache. Cache settings are controlled via environment variables.

🔧 Chromium Notes

Uses system-installed Chromium (/usr/bin/chromium) Required dependencies are installed in the Docker image --no-sandbox is enabled for compatibility inside containers

📈 Use Cases

SEO for SPA (React, Vue, Angular) Social media previews (Open Graph rendering) Rendering pages for bots/crawlers

🛠 Tips

Increase shm_size if Chromium crashes Tune CACHE_MAXSIZE based on memory limits Use a reverse proxy (e.g., Nginx) in production

About

No description, website, or topics provided.

Resources

Readme
MIT license
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.