I was reading through #1775. It seems that there are a bunch of choices and trade-offs to make.
To date, we valued the following:
- Small (as possible) images.
- Creating dependencies between images to single instance binaries in docker layers as much as possible (for example, the aspnet image depends on the runtime one. That benefits in cases where you use both images. We intend to do more of this over time. The biggest win is getting the SDK to depend on the aspnet image (which then in turn depends on runtime). That would help docker-based builds alot!
Going forward, we are going to have to make more tradeoffs, and likely give up on some desirable scenarios.
I see the following rough-hewn options:
- Each layer is monolithic and optimized for itself (aspnet includes but does not depend on runtime; this matches the current state of the PR). Basically, aggregation not inheritance at every layer.
- The runtime uses composite images and nothing else. ASP.NET and the SDK build on top of the runtime (and the sdk might build on top of aspnet) and are in the same version bubble as the runtime but do not use composite images. Same with apps that build on top.
- Self-contained apps can generate fully composite and linked apps. (one layer on top of runtime-deps). This option stands along from the rest. It's not an alternative, but just another option for people to opt-into and support.
I'm attracted to the second option as the default story. My guess is that it would be a sweet spot, assuming crossgen supports it. This option enables the new crossgen2 features, while keeping us on our current path (described at the start of this issue).
/cc @davidwrighton, @MichaelSimons
I was reading through #1775. It seems that there are a bunch of choices and trade-offs to make.
To date, we valued the following:
Going forward, we are going to have to make more tradeoffs, and likely give up on some desirable scenarios.
I see the following rough-hewn options:
I'm attracted to the second option as the default story. My guess is that it would be a sweet spot, assuming crossgen supports it. This option enables the new crossgen2 features, while keeping us on our current path (described at the start of this issue).
/cc @davidwrighton, @MichaelSimons