isOpen && focusFirstInput()}> Edit container {#if isEditingTitle} - { if (e.key === 'Enter') saveEditingTitle(); if (e.key === 'Escape') cancelEditingTitle(); }} /> {:else if name} - {name} {/if} {#if loadingData}
Loading container data...
{:else}
{#if configSets.length > 0}

Apply config set

{selectedConfigSetId ? configSets.find(c => c.id === parseInt(selectedConfigSetId))?.name : 'Select a config set to merge values...'} {#each configSets as configSet}
{configSet.name} {#if configSet.description} {configSet.description} {/if}
{/each}
{#if selectedConfigSetId} {@const selectedSet = configSets.find(c => c.id === parseInt(selectedConfigSetId))} {#if selectedSet?.description}

{selectedSet.description}

{/if} {/if}

Note: Values from the config set will be merged with existing settings. Existing keys won't be overwritten.

{/if} {#if showComposeConfigWarning}

This container belongs to stack "{composeStackName}"

Modifying settings will remove this container from the stack. The container will be recreated and lose its stack association. To avoid this, edit the stack's compose file instead.

{:else if showComposeRenameWarning}

Renaming container from stack "{composeStackName}"

The container will stay in the stack, but the compose file will be out of sync. Running docker compose up may recreate it with the original name.

{:else if isComposeContainer}

Stack container: {composeStackName}

This container is managed by a Docker Compose stack.

{/if}

Basic settings

errors.name = undefined} /> {#if errors.name}

{errors.name}

{/if}
errors.image = undefined} /> {#if errors.image}

{errors.image}

{/if}
{#if restartPolicy === 'no'} {:else if restartPolicy === 'always'} {:else if restartPolicy === 'on-failure'} {:else} {/if} {restartPolicy === 'no' ? 'No' : restartPolicy === 'always' ? 'Always' : restartPolicy === 'on-failure' ? 'On failure' : 'Unless stopped'} {#snippet children()} No {/snippet} {#snippet children()} Always {/snippet} {#snippet children()} On failure {/snippet} {#snippet children()} Unless stopped {/snippet}
{#if networkMode === 'bridge'} {:else if networkMode === 'host'} {:else} {/if} {networkMode === 'bridge' ? 'Bridge' : networkMode === 'host' ? 'Host' : 'None'} {#snippet children()} Bridge {/snippet} {#snippet children()} Host {/snippet} {#snippet children()} None {/snippet}
{#if availableNetworks.length > 0}

Networks

Select network to add... {#each availableNetworks.filter(n => !selectedNetworks.includes(n.name) && !['bridge', 'host', 'none'].includes(n.name)) as network} {#snippet children()}
{network.name} {network.driver}
{/snippet}
{/each}
{#if selectedNetworks.length > 0}
{#each selectedNetworks as networkName} {@const network = availableNetworks.find(n => n.name === networkName)} {networkName} {#if network} {network.driver} {/if} {/each}
{/if}

Container will be connected to selected networks in addition to the network mode above

{/if}

Port mappings

{#each portMappings as mapping, index}
Host
Container
Protocol {mapping.protocol.toUpperCase()}
{/each}

Volume mappings

{#each volumeMappings as mapping, index}
Host path
Container path
Mode {mapping.mode.toUpperCase()}
{/each}

Environment variables

{#each envVars as envVar, index}
Key
Value
{/each}

Labels

{#each labels as label, index}
Key
Value
{/each}

Auto-update

{#if statusMessage}
{statusMessage}
{/if} {#if error}
{error}
{/if}
{/if}