Skip to content

This is a sample Web Application that features node, python, postgres, and nginx.

License

Notifications You must be signed in to change notification settings

bakenfazer/educause

Repository files navigation

educause

This is a sample web application showcasing a multi-tier architecture using Node.js, Python (Flask), PostgreSQL, and nginx.

The app is available in two variants:

  • Legacy version with traditional upstream container images.
  • Chainguard version using minimal, secure-by-default, zero to near-zero CVE container images.

Getting Started

Prerequisites

  • Docker
  • grype (for scanning container images)
  • Clone this directory and cd into it from your terminal:
git clone https://github.com/bakenfazer/educause && cd educause

1. Build and Run the Legacy Version

docker compose up -d --build

Verify It’s Running

alt text

  • Check that the backend API works by running:
curl http://localhost:5000

You should see the following response: Hooray! The API works.

Scan Legacy Images for CVEs

./scanners/grype-scan.sh

This will save your results to ./scanners/scan-results/grype-legacy-images.csv.


2. Tear Down the Legacy Stack

To clean everything, including volumes:

docker compose down -v

3. Build and Run the Chainguard Version

docker compose -f docker-compose-chainguard.yaml up -d --build

Verify It’s Running

curl http://localhost:5000/

Scan Chainguard Images for CVEs

./scanners/grype-scan.sh

This will save your results to ./scanners/scan-results/grype-chainguard-images.csv.


4. Tear Down the Chainguard Stack

To clean everything, including volumes:

docker compose down -v

Compare Results

After scanning both versions, open the CSV files to review the outputs to compare:

  • Total CVEs
  • Severity levels (Critical, High, etc.)
  • Image size and dependency differences

This highlights the value of using Chainguard's minimal, secure-by-default images like those from Chainguard.

Extra Credit

Compare image sizes, SBOMs, and provenance

About

This is a sample Web Application that features node, python, postgres, and nginx.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published