Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
1900178
stash
catplat Jul 15, 2025
9939a6d
Initial commit of new files containing common content
catplat Jul 19, 2025
b3f5940
Remove common content that has been moved into individual settings files
catplat Jul 19, 2025
862e72f
Composable image: Remove common content that has been moved into indi…
catplat Jul 19, 2025
c1cfdc8
settings/_index.md initial draft
catplat Jul 19, 2025
bf79995
Rename settings to image-properties
catplat Jul 19, 2025
a72bb8f
Merge branch 'main' into 4773-move-rlnshps-content
catplat Jul 19, 2025
8a90ba1
image-properties tweaks
catplat Jul 20, 2025
6f15842
Platform hooks.md - use codetabs
catplat Jul 20, 2025
8471043
platform web.md - update and fix link in intro
catplat Jul 20, 2025
61f6df4
Platform crons: change link title to avoid confusion with wiki page d…
catplat Jul 20, 2025
f07b94f
Platform crons.md - edit
catplat Jul 20, 2025
1aea509
Platform file to additional_hosts
catplat Jul 20, 2025
13d41e3
Platform image files - update link to additional_hosts info
catplat Jul 20, 2025
0d5c4b3
Upsun composable image - link update for testing
catplat Jul 20, 2025
2d88e72
Upsun single-runtime: Assorted minor additions to track merging content
catplat Jul 20, 2025
5a60377
Upsun: commit new image property files that contain merged content
catplat Jul 20, 2025
a97ca41
Upsun: tmp image-properties/_index.md file for testing subcategory
catplat Jul 20, 2025
b48a091
Merge branch 'main' into 4773-move-rlnshps-content
catplat Jul 28, 2025
245beb2
app-reference: change topic title to "Choose image type"
catplat Jul 31, 2025
d9eb5f6
platform: composable-image topic updates
catplat Jul 31, 2025
d203170
platform: single-runtime image topic updates
catplat Jul 31, 2025
66ff126
platform: add image-properties parent topic and child topics
catplat Jul 31, 2025
f26d6fe
platform: deletions as a result of moving files
catplat Jul 31, 2025
29e647c
Merge branch 'main' into 4773-move-rlnshps-content
catplat Jul 31, 2025
fa12a4b
platform/upsun: app-reference - update nix packages to 120,000
catplat Jul 31, 2025
ae6d037
platform: single-runtime/composable topics: minor edits
catplat Jul 31, 2025
9977942
platform: update frontmatter description for each property file
catplat Jul 31, 2025
a643a9f
platform: Add text to image properties landing page
catplat Jul 31, 2025
90f976c
platform: edits to create-app/app-reference/_index.md
catplat Jul 31, 2025
9c95e2b
platform: single-runtime-image - draft note text about properties res…
catplat Jul 31, 2025
cdcdef0
platform: image-properties/_index.md edits
catplat Jul 31, 2025
5d6f8ab
platform: /image-properties files - add {{% description %}}
catplat Jul 31, 2025
ac28e6f
platform: fix links to web.md
catplat Jul 31, 2025
3ee23d8
upsun: add image properties files
catplat Jul 31, 2025
f8bb843
upsun: move image properties files
catplat Jul 31, 2025
1cfa9df
platform: update links to point to new properties files
catplat Jul 31, 2025
9364b24
platform: more link updates to new properties files
catplat Jul 31, 2025
ae193f6
platform: add note about common properties above the properties table
catplat Jul 31, 2025
92e35da
upsun: update links to point to new properties files; add note about …
catplat Jul 31, 2025
0e58480
upsun: update links to point to new properties files
catplat Jul 31, 2025
7e9d0d3
upsun: app-reference initial outline - decision criteria
catplat Jul 31, 2025
7f1bb58
Merge branch 'main' into 4773-move-rlnshps-content
catplat Aug 22, 2025
9a2ea49
formatting
catplat Aug 22, 2025
95c6cbe
minor edits and formatting
catplat Aug 22, 2025
8f494ee
Remove reference DG3 only from files under create-apps
catplat Aug 22, 2025
31141d8
Make the property Name the link, not the Type
catplat Aug 25, 2025
5246399
platform: move description to be first content in topic
catplat Aug 25, 2025
de379d1
upsun: move the description to be the first content in the topic.
catplat Aug 25, 2025
a1b75d0
Updates to image-properties content
catplat Aug 25, 2025
d486777
Update the note about common properties being in separate topics
catplat Aug 25, 2025
92464d3
Delete premium-features/tiered shortcode from upsun content. Applies …
catplat Aug 25, 2025
95388b7
Minor edits
catplat Aug 28, 2025
d16e054
remove comment
catplat Aug 28, 2025
e8cd0bb
apps-reference/_index.md: stash of multiple changes
catplat Aug 28, 2025
0f6b907
Remove redundant text
catplat Aug 28, 2025
2e27ae2
Merge branch 'main' into 4773-move-rlnshps-content
catplat Aug 28, 2025
467e991
Numerous updates
catplat Sep 2, 2025
f4da66e
changes per advocacy
catplat Sep 2, 2025
18e72c4
more change - per advocacy
catplat Sep 2, 2025
a36a1b3
more refinements
catplat Sep 2, 2025
4f847c2
fix typos
catplat Sep 2, 2025
20a1db5
type and stack updates
catplat Nov 17, 2025
c0a0d09
Merge remote-tracking branch 'origin/main' into 4773-move-rlnshps-con…
catplat Nov 17, 2025
93223ba
replace hardcoded channel version with latest composable
catplat Nov 17, 2025
9e8f2ce
beta
catplat Nov 17, 2025
2a1d7c3
misc edits
catplat Nov 18, 2025
f80c661
move content around; eliminate some duplication
catplat Nov 18, 2025
08a78a4
edits
catplat Nov 18, 2025
2dac844
Update comprehensive comp image examples
catplat Nov 18, 2025
be6d459
correction
catplat Nov 18, 2025
ea735f7
app name var; add type
catplat Nov 18, 2025
0e82376
edits
catplat Nov 18, 2025
ca6c5c8
mounts: misc updates
catplat Nov 19, 2025
1df6b29
container_profile: misc updates
catplat Nov 19, 2025
d6e49d3
move type for consistency
catplat Nov 20, 2025
84d87a6
Add details about the *_start, start web commands
catplat Nov 20, 2025
3cbe12f
rename anchor for consistency
catplat Nov 20, 2025
f9bc913
edit
catplat Nov 20, 2025
1a8fedc
app variable; move type
catplat Nov 20, 2025
3906dbe
replace relative paths with absolute paths
catplat Nov 20, 2025
d828f0f
remove sizing hints section (belongs with PHP info)
catplat Nov 20, 2025
32c65b2
add default container profile info for composable image
catplat Nov 20, 2025
b55d07a
numerous edits (not structural)
catplat Nov 20, 2025
37f4fd1
numerous edits: move Nix pkgs section, add sizing hints; many non-str…
catplat Nov 20, 2025
53ba864
Merge branch 'main' into 4773-move-rlnshps-content
catplat Nov 20, 2025
4bd73c0
fix switch frontend/backend (nodeJS frontend; PHP backend)
catplat Nov 21, 2025
c0e7ba1
initial copy over of Flex content
catplat Nov 21, 2025
9d747a8
edits to intro
catplat Nov 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sites/platform/src/administration/users.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ A user can have one of the following roles on an environment type which grants t
| Contributor | Yes | No | Yes | Yes | Yes | No | No |
| Viewer | Yes | No | No | Yes | No | No | No |

To customize which roles can use SSH, set [`access` in your app configuration](/create-apps/app-reference/single-runtime-image.md#access).
To customize which roles can use SSH, set [`access` in your app configuration](/create-apps/image-properties/access.md).

### View a user's permissions across all of the projects in your organization

Expand Down
4 changes: 2 additions & 2 deletions sites/platform/src/create-apps/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Unlike other runtimes most PHP applications do not have a start command. There i

{{< /note >}}

The following example shows a setup for a PHP app with comments to explain the settings. Please note that Composable image is currently available as a Beta feature.
The following example shows a setup for a PHP app with comments to explain the settings.


{{< codetabs >}}
Expand Down Expand Up @@ -188,7 +188,7 @@ web:
<--->

+++
title=Composable image (BETA)
title=Composable image
+++

```yaml {configFile="app"}
Expand Down
80 changes: 62 additions & 18 deletions sites/platform/src/create-apps/app-reference/_index.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,76 @@
---
title: "App reference"
weight: 4
title: "Choose an image type"
weight: -19
description: Configure your app and control how it's built and deployed on {{% vendor/name %}}.
layout: single
---

To define your app, you can either use one of {{% vendor/name %}}'s [single-runtime image](/create-apps/app-reference/single-runtime-image.md)
or its [composable image (BETA)](/create-apps/app-reference/composable-image.md).
An _image_ represents the configuration of the container that contains the application (or service) that you want to deploy.

## Single-runtime image
Choosing the image type for the container that best suits your application is the first and most important decision in configuring how your application is deployed.

{{% vendor/name %}} provides and maintains a list of single-runtime images you can use for each of your application containers.</br>
See [all of the options you can use](/create-apps/app-reference/single-runtime-image.md) to define your app using a single-runtime image.
You can choose either {{% vendor/name %}}'s [single-runtime image](/create-apps/app-reference/single-runtime-image.md)
or its [composable image](/create-apps/app-reference/composable-image.md). **The key difference between them is the type of flexibility that they offer**.

## Composable image (BETA)
For both image types, the image is defined in the `{{< vendor/configfile "app" >}}` file.

The {{% vendor/name %}} composable image provides more flexibility than single-runtime images.
When using a composable image, you can define a stack (or group of packages) for your application container to use.
## Which image type should you choose? {#which-image-type}

There are over 80,000 packages available from the [Nix Packages collection](https://search.nixos.org/) that you can add to your stack.
You can add as many packages to your application container as you need.
**Single-runtime image**: This is the recommended choice for applications that can use a standard Upsun runtime image (using a single runtime) and don't require extensions that are not related to its runtime: for example, a PHP application that requires a specific PHP version.

{{% note %}}
Consider using a single-runtime image when these factors are important:
- Your application requires only a single runtime and no (or few) additional packages or tools.<BR>
You can add runtime extensions, but packages that are not related to the runtime can only be added to the build phase, which involves a common line installation. As a result, you might need to make additional changes to the configuration file to establish a valid configuration.<BR>
If you anticipate adding many packages or having a complex build hook, consider using a composable image instead.
- You want to choose specific package versions (for example, a specific PHP version).

{{% vendor/name %}} guarantees optimal user experience with the specific [set of packages](/create-apps/app-reference/composable-image.md#supported-nix-packages) it supports.
You can use any other package available from the [Nix Packages collection](https://search.nixos.org/),
but NixOs is responsible for their support.
**Note:** For any supported PHP version, only specific node.js and Python versions are available in a single-runtime image. If your application requires combinations that {{% vendor/name %}} does not support, consider using a composable image, which enables you to combine different versions.
- You want {{% vendor/name %}} to update the image (perform package upgrades and apply security patches) rather than do this maintenance yourself.
- Your team has the time and knowledge to manually configure package versions and manage dependencies: For example, writing scripts to cache binaries after they're downloaded.

{{% /note %}}
If you initially choose a single-runtime image and your application needs change, you can move the app to a composable image: For example, if you determine that your application needs additional packages or multiple runtimes.

**Composable image**: Choose this image type your application has multiple dependencies: for example, multiple runtimes, additional packages, or other items such as HTML files or PDF images. Composable images can be used for both applications and services.

This image type enables you to build an image by using the packages in the latest available Nix channel, or you can define ("compose") the collection of packages (as defined by the `stack` key) for your image, especially when packages are available in the {{% vendor/name %}} registry.

Manually defining a stack in a composable image is typically simpler than adding packages to a build hook to support a single-runtime image.

Consider using a composable image when these factors are important:
- Your application requires multiple runtimes and tools, or different versions of the same package.
- You build your own services. See the [Building your own services](#building-services) section below.
- You want the ability to install _all_ the packages you need in your application container, ensuring that an application works on any machine.<BR>
In a composable image, you can accomplish this by using supported Nix channels. This method ensures app consistency and helps to streamline the development, testing, and deployment processes.

- Your team is comfortable with upgrading, testing, and refactoring images promptly when Nix a channel becomes deprecated (every six months).



| Criteria | Single-runtime image | Composable image |
|-----------------------------|----------------------|------------------|
| # of runtimes per container | one | zero or more |
| Best for buildling... | Single runtime applications | Applications, services |

Check failure on line 52 in sites/platform/src/create-apps/app-reference/_index.md

View workflow job for this annotation

GitHub Actions / vale

[vale] sites/platform/src/create-apps/app-reference/_index.md#L52

[Vale.Spelling] Did you really mean 'buildling'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'buildling'?", "location": {"path": "sites/platform/src/create-apps/app-reference/_index.md", "range": {"start": {"line": 52, "column": 12}}}, "severity": "ERROR"}
| Packages permitted | Runtime and its extensions | 0 or more runtimes; extensions, services |
| Manual configuration required for... | Downloads, dependencies, adding packages to build hook | If not using a Nix channel: Defining the container stack, resolving package incompatibilities |
| Updates and security patches | {{% vendor/name %}} performs minor (`major.`)(_`minor`_) updates and applies patches automatically upon deployment | You perform upgrades, apply patches, and ensure package compatibility |
| Support | ? | Stable Nix channels only (but any NixOs package can be installed, including `unstable`) |
| Performance | ? | Initial builds and rebuilds take some time; automatic caching improves container startup time |
| `type` | Indicates the base container image used to run the application (`major.minor`). Cannot select a patch version. | Indicates the Nix channel version. |
| build and deploy `hooks` | Build flavor is run if applicable and any dependencies are installed | Managed by the Nix channel |


## Keys used in each image type

Only the single-runtime image supports the [``build``](/create-apps/app-reference/single-runtime-image.md#build), [``dependencies``](/create-apps/app-reference/single-runtime-image.md#dependencies), and [``runtime``](/create-apps/app-reference/single-runtime-image.md#druntime) keys. In a composable image, the equivalent is the [`stack`](/create-apps/app-reference/composable-image.html#stack) key.

Otherwise, the same keys are available for both image types. Differences in syntax or meaning are noted in each key's topic - see the [Image properties](/create-apps/image-properties.md) section for the topics that describe each key.

## Multi-app projects
In a multiple application context, you can use a mix of single-runtime images and composable images. See the examples in the [single-runtime image](/create-apps/app-reference/single-runtime-image.md#combine-single-runtime-and-composable-images) topic and [composable](/create-apps/app-reference/composable-image.md#combine-single-runtime-and-composable-images) image topic.


## Building your own services {#building-services}
The composable image type is typically the recommended choice for building services that {{% vendor/name %}} doesn't offer as an image. With this image type, you install _only_ the packages that the service requires. Installing a runtime is also optional, determined by whether the service requires a runtime.

By contrast, a single-runtime image requires a runtime, and additional packages must be added to the build phase, which requires more manual configuration.

See [all of the options you can use](/create-apps/app-reference/composable-image.md) to define your app using the composable image.
Loading
Loading