{"id":38267323,"url":"https://github.com/mberwanger/dockerfiles","last_synced_at":"2026-01-17T01:47:31.378Z","repository":{"id":321329226,"uuid":"1068202968","full_name":"mberwanger/dockerfiles","owner":"mberwanger","description":"Build and publish custom Docker images at scale using Go templates, automatic dependency detection, and GitHub Actions workflows with intelligent build ordering","archived":false,"fork":false,"pushed_at":"2025-10-29T02:47:42.000Z","size":81,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-29T04:25:44.767Z","etag":null,"topics":["build-automation","ci-cd","devops","docker-images"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mberwanger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-02T02:27:05.000Z","updated_at":"2025-10-29T02:47:46.000Z","dependencies_parsed_at":"2025-10-29T04:26:09.154Z","dependency_job_id":"6fd5acba-f6d5-4509-a28e-62d4212d64c5","html_url":"https://github.com/mberwanger/dockerfiles","commit_stats":null,"previous_names":["mberwanger/dockerfiles"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mberwanger/dockerfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mberwanger%2Fdockerfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mberwanger%2Fdockerfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mberwanger%2Fdockerfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mberwanger%2Fdockerfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mberwanger","download_url":"https://codeload.github.com/mberwanger/dockerfiles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mberwanger%2Fdockerfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28491632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"ssl_error","status_checked_at":"2026-01-17T00:43:11.982Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-automation","ci-cd","devops","docker-images"],"created_at":"2026-01-17T01:47:31.244Z","updated_at":"2026-01-17T01:47:31.351Z","avatar_url":"https://github.com/mberwanger.png","language":"Go","readme":"# Docker Base Images\n\nDocker base images built from templates using a Go-based generation system.\n\n## Quick Start\n\n```bash\n# Generate all Dockerfiles and workflow (default)\nmake\n\n# Generate all Dockerfiles\nmake generate-all\n\n# Generate specific image\nmake generate IMAGE=core\n\n# Generate GitHub Actions workflow\nmake generate-workflow\n\n# Run tests\nmake test\n\n# Clean generated files\nmake clean\n```\n\n## Directory Structure\n\n```\nimages/\n├── manifest.yaml          # Central configuration for all images\n├── base/                  # Foundational base images (Debian, tini)\n├── lang/                  # Programming languages (Python, Go, Java)\n├── app/                   # Applications (mailcatcher, minio)\n├── runtime/               # Web servers (node-passenger, node-pm2, php-fpm)\n└── util/                  # Development utilities (k8s-toolbox, yq)\n\ntool/                      # Go build system\n├── cmd/                   # CLI commands\n└── internal/              # Generator, template engine, workflow builder\n```\n\n## Development Workflow\n\n1. **Edit configuration or templates**:\n   - Update `images/manifest.yaml` to add/modify image versions\n   - Or modify template files in `images/{category}/{image}/source/`\n   - Template files use `.tmpl` extension with Go template syntax\n   - Non-template files (like certificates) are copied as-is\n\n2. **Regenerate files**: Run `make` at the root of the repo\n   - This generates all Dockerfiles from templates\n   - And updates the GitHub Actions workflow\n\n3. **Commit changes**: Commit both template/manifest and generated files\n   ```bash\n   git add images/ .github/workflows/\n   git commit -m \"Update Python to 3.13\"\n   ```\n\n4. **Create PR**: Open a pull request\n   - CI validates that generated files are up to date\n   - Docker images are built and tested (but not pushed)\n\n5. **Merge to main**: Once approved and merged\n   - Images are automatically built and pushed to the registry\n\n**Note**: A daily scheduled job (1 PM UTC) automatically rebuilds and pushes all images to keep them up to date with the latest base image updates and security patches.\n\n## Template System\n\nTemplates use Go's `text/template` syntax:\n\n```dockerfile\n{{generation_message}}\n\nFROM {{from_image .base_image}}\n\nRUN apt-get update \u0026\u0026 apt-get install -y \\\n    python{{.python_version}} \\\n    \u0026\u0026 rm -rf /var/lib/apt/lists/*\n```\n\n### Template Functions\n\n- `generation_message`: Adds \"GENERATED FILE, DO NOT MODIFY\" header\n- `from_image`: Generates FROM statements with proper registry paths\n- Standard Go template functions: `index`, `range`, `if`, etc.\n\n## Manifest Configuration\n\nThe `images/manifest.yaml` defines all images and their versions:\n\n```yaml\nversion: 1\n\ndefaults:\n  registry: ghcr.io/mberwanger\n\nimages:\n  python:\n    path: lang/python\n    defaults:\n      base_image:\n        name: core:bullseye\n    versions:\n      \"3.13\":\n        python_version: \"3.13\"\n```\n\n## Important Notes\n\n- **Never edit generated Dockerfiles directly** - always modify templates\n- **Generated files must be committed** - CI validates they're up to date\n- Source directories contain both `.tmpl` templates and static files\n\n## Requirements\n\n- Go 1.21 or later\n- Make\n- Docker (for building images locally)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmberwanger%2Fdockerfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmberwanger%2Fdockerfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmberwanger%2Fdockerfiles/lists"}