isOpen && focusFirstInput()}> Create new container {#if !skipPullTab}
{#if envHasScanning} {/if}
{/if}
image = newImage} />
{#if envHasScanning} {:else}

Vulnerability scanning is disabled for this environment.

Enable it in Settings → Environments to scan images.

{/if}

Image: {image || 'Not set'}

{#if isPulling || isScanning}

{isScanning ? 'Scanning...' : 'Pulling...'}

{:else if imageReady}

Image pulled and ready {#if scanResults.length > 0} • {totalVulnerabilities} vulnerabilities {/if}

{:else if !image && !skipPullTab}

Go to "Pull" tab to set the image

{/if}
{#if configSets.length > 0}

Config set

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

Basic settings

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

{errors.name}

{/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}
{/if}

Port mappings

{#each portMappings as mapping, index}
Host
Container
{ portMappings[index].protocol = v; }} />
{/each}

Volume mappings

{#each volumeMappings as mapping, index}
Host path
Container path
{ volumeMappings[index].mode = v; }} />
{/each}

Environment variables

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

Labels

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

Advanced container options (click to expand)

{#if showResources}

Configure memory and CPU limits for this container

{/if}
{#if showSecurity}
{ addCapability('add', v); }}> Select capability to add... {#each commonCapabilities.filter(c => !capAdd.includes(c)) as cap} {/each} {#if capAdd.length > 0}
{#each capAdd as cap} +{cap} {/each}
{/if}
{ addCapability('drop', v); }}> Select capability to drop... {#each commonCapabilities.filter(c => !capDrop.includes(c)) as cap} {/each} {#if capDrop.length > 0}
{#each capDrop as cap} -{cap} {/each}
{/if}
{/if}
{#if showHealth}
{#if healthcheckEnabled}
{/if}
{/if}
{#if showDns}
{ if (e.key === 'Enter') { e.preventDefault(); addDnsServer(); } }} />
{#if dnsServers.length > 0}
{#each dnsServers as server} {server} {/each}
{/if}
{/if}
{#if showDevices}
{#each deviceMappings as mapping, index}
{/each}
{/if}
{#if showUlimits}
{#each ulimits as ulimit, index}
{ulimit.name} {#each commonUlimits as name} {/each}
{/each}
{/if}

Auto-update

{#if activeTab === 'container' && hasCriticalOrHigh}
Critical/high vulnerabilities found in image
{/if}