A collection of production-ready, security-hardened Dockerfiles using multi-stage builds, pinned dependencies, and non-root users.
| Image | Description |
|---|---|
| anki | Anki sync server for flashcard synchronization |
| dnscrypt-proxy | DNSCrypt proxy with encrypted DNS support |
| paperless-ngx | Paperless-ngx document management system |
| php-lol | PHP-FPM with Nginx and common extensions (8.1, 8.2, 8.3, 8.4) |
| pingdom-exporter | Prometheus exporter for Pingdom metrics |
| pint | Pint β Prometheus rule linter by Cloudflare |
| python-github-backup | python-github-backup β GitHub repository backup tool |
| radicale | Radicale CalDAV/CardDAV server |
| resec | Resec β Redis high-availability agent using Consul |
| thumbor | Thumbor smart image cropping and resizing service |
| tor | Tor anonymity network daemon |
| twemproxy | Twemproxy (nutcracker) β Memcached/Redis proxy |
- Docker (with Compose)
- hadolint β Dockerfile linter
- dive β Docker image layer analyzer
- container-structure-test β container test framework
- shellcheck β shell script linter
- pre-commit β git hook framework
- Python 3 (for the virtual environment)
Install dependencies, build all images, and start services:
make install
make docker-build
docker-compose updocker-compose build <service>Run the full test suite (pre-commit, shellcheck, hadolint, container-structure-test, dive):
make testRun individual checks:
make dockerfile-lint # Lint all Dockerfiles with hadolint
make container-structure-test # Run container structure tests
make shellcheck # Lint shell scripts
make pre-commit # Run pre-commit hooks
make dive # Analyze image layersTest a single image:
./bin/container-structure-test test \
--image bdossantos/<service> \
--config tests/<service>.yaml.
βββ dockerfiles/
β βββ <service>/
β βββ Dockerfile
β βββ ... # service-specific config
βββ tests/
β βββ <service>.yaml # container-structure-test config
βββ scripts/
β βββ changelog # changelog generator
β βββ container-structure-test-install # install test framework
β βββ dive # dive analyzer
β βββ dockerfile-lint # hadolint wrapper
βββ docker-compose.yml # development composition
βββ docker-compose.ci.yml # CI composition
βββ Makefile # build automation
Run make help to list all targets:
changelog Generate CHANGELOG.md
container-structure-test Run container-structure-test
container-structure-test-install Install container-structure-test
dive Run dive
docker-build Build all Dockerfiles
dockerfile-lint Run hadolint on Dockerfile(s)
install Install all the things
pip-install Install pip dependencies
pre-commit Run pre-commit tests
shellcheck Run shellcheck on /scripts directory
test Run tests suite
venv Create python virtualenv if not exists
- Pinned versions β base images, system packages, and application dependencies are version-pinned for reproducibility
- Multi-stage builds β separate build and runtime stages to minimize image size
- Non-root by default β services run as UID/GID
65534(nobody/nogroup) - Read-only containers β images are compatible with
read_only: true - Minimal attack surface β only essential runtime packages are installed