[RFC #0105] - Dockerfiles
natalieparellano opened this issue ยท 1 comments
RFC #0105 - Dockerfiles
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:
- buildpacks/spec#308
- buildpacks/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:
- buildpacks/spec#320
- buildpacks/spec#321
- Released in platform API version
0.10
- Released in buildpack API version
0.9
Lifecycle:
- buildpacks/lifecycle#896
- Released in lifecycle version
0.15
Pack:
- buildpacks/pack#1468 (more important, PR in progress)
- buildpacks/pack#1469 (more important, PR in progress)
- buildpacks/pack#1470
- buildpacks/pack#1486
- buildpacks/pack#1488
- buildpacks/pack#1487
- buildpacks/pack#1551
- Released in pack version
TBD
Samples:
- buildpacks/samples#112 (PR in progress)
Documentation:
- buildpacks/docs#501 (PR in progress)
- buildpacks/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:
- buildpacks/spec#347
- buildpacks/spec#348
- Released in platform API version
0.12
- Released in buildpack API version
0.10
Lifecycle:
- buildpacks/lifecycle#995
- buildpacks/lifecycle#996
- buildpacks/lifecycle#997
- buildpacks/lifecycle#998
- buildpacks/lifecycle#999
- buildpacks/lifecycle#1000
Libcnb:
- TBD
- Released in libcnb version
TBD
Pack:
Samples:
Documentation:
Optimizations
- 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)
- buildpacks-community/kpack#1047
- tektoncd/catalog#1096
- buildpacks/pack#1623 (mentorship project)
Should we also include a link to a paketo's github EPIC as they will also have to support extensions
Dockerfiles ?