-
Notifications
You must be signed in to change notification settings - Fork 73
Description
RFC #0105 - Dockerfiles
📖 🌎 For a brief tour of what has shipped so far, consult these docs
Phase 1 - switching the run image
In this phase of the implementation, image extensions may output run.Dockerfiles in order to switch the runtime base image based on which buildpacks detected.
The detector binary should run /bin/detect for buildpacks and extensions, run /bin/generate for extensions, and determine the new run image from the generated Dockerfiles.
Spec:
- Platform api changes to support phase 1 of Dockerfiles implementation spec#308
- Buildpack api changes to support phase 1 of Dockerfiles implementation spec#307
- Released in platform API version
0.10 - Released in buildpack API version
0.9
Lifecycle:
Phase 2 - extending the build image
In this phase of the implementation, image extensions may output build.Dockerfiles in order to extend the build time base image.
The extender binary, running as root, should apply the Dockerfiles in the order determined during detect, and then drop privileges before executing the build phase.
Spec:
- Platform api changes to support phase 2 of Dockerfiles implementation spec#320
- Buildpack api changes to support phase 2 of Dockerfiles implementation spec#321
- Released in platform API version
0.10 - Released in buildpack API version
0.9
Lifecycle:
- Dockerfiles phase 2 lifecycle#896
- Released in lifecycle version
0.15
Pack:
-
pack builder createshould support extensions pack#1468 (more important, PR in progress) - pack should support platform 0.10 pack#1469 (more important, PR in progress)
- pack should support
pack extension *commands pack#1470 -
pack inspectwhen image built with extensions should show the extensions pack#1486 -
pack builder inspectshould show extensions if they are present pack#1488 - pack build should support
--extensionpack#1551 - Released in pack version
0.30.0
Samples:
- Create sample apps with dockerfiles, hooks, etc samples#112 (PR in progress)
Documentation:
- Document Dockerfiles feature (phase 1) docs#501 (PR in progress)
- Static image extensions should be documented docs#530
Phase 3 - extending the run image
In this phase of the implementation, image extensions may output Dockerfiles OR run.Dockerfiles in order to extend the runtime base image.
The extender binary, running as root, should apply the Dockerfiles in the order determined during detect, and then provide a reference to the extended run image to the platform, so that the platform can provide this during the export phase.
Spec:
- Platform API changes for run image extension (Dockerfiles phase 3) spec#347
- [RFC #0105] Buildpack API changes for run image extension (Dockerfiles phase 3) spec#348
- Released in platform API version
0.12 - Released in buildpack API version
0.10
Lifecycle:
- [RFC #0105] Analyzer changes for run image extension (Dockerfiles phase 3) lifecycle#995
- [RFC #0105] Detector changes for run image extension (Dockerfiles phase 3) lifecycle#996
- [RFC #0105] Restorer changes for run image extension (Dockerfiles phase 3) lifecycle#997
- [RFC #0105] Extender changes for run image extension (Dockerfiles phase 3) lifecycle#998
- [RFC #0105] Exporter changes for run image extension (Dockerfiles phase 3) lifecycle#999
- [RFC #0105] Rebaser changes for run image extension (Dockerfiles phase 3) lifecycle#1000
Libcnb:
- TBD
- Released in libcnb version
TBD
Pack:
- [RFC #0105] pack should support run image extension pack#1620
- Run images are not pulled when using extensions pack#1686
Samples:
Documentation:
Optimizations
-
pack build --interactiveshould show extensions pack#1487 - If extensions are only used to extend the build image and/or switch the run image, support creator workflow (only for trusted builders, the creator would need to stay root at least until detect/generate has finished)
- Support Dockerfiles (phases 1 and 2) buildpacks-community/kpack#1047
- Buildpacks: support Dockerfiles tektoncd/catalog#1096
- [RFC #0105] pack should support build image extension with Docker pack#1623 (mentorship project)