2023-04-19 10:42:15 +00:00
< div >
2023-12-07 18:06:32 +00:00
< form wire : submit = 'submit' class = " flex flex-col " >
2023-06-02 10:34:45 +00:00
< div class = " flex items-center gap-2 " >
< h2 > General </ h2 >
2023-05-25 12:05:44 +00:00
< x - forms . button type = " submit " >
2023-05-18 11:26:35 +00:00
Save
2023-05-25 12:05:44 +00:00
</ x - forms . button >
2023-10-18 09:22:56 +00:00
@ if ( $isConfigurationChanged && ! is_null ( $application -> config_hash ))
2023-10-18 09:20:40 +00:00
< div class = " font-bold text-warning " > Configuration not applied to the running application . You need to
redeploy .</ div >
@ endif
2023-05-18 11:26:35 +00:00
</ div >
2023-10-18 09:20:40 +00:00
< div > General configuration for your application .</ div >
2023-05-31 08:19:29 +00:00
< div class = " flex flex-col gap-2 py-4 " >
2023-05-22 09:21:03 +00:00
< div class = " flex flex-col items-end gap-2 xl:flex-row " >
2023-08-11 18:19:42 +00:00
< x - forms . input id = " application.name " label = " Name " required />
< x - forms . input id = " application.description " label = " Description " />
2023-05-18 11:26:35 +00:00
</ div >
2024-01-10 10:07:53 +00:00
2023-11-24 14:48:23 +00:00
@ if ( ! $application -> dockerfile && $application -> build_pack !== 'dockerimage' )
2023-10-06 11:46:42 +00:00
< div class = " flex flex-col gap-2 " >
< div class = " flex gap-2 " >
2023-12-08 14:27:11 +00:00
< x - forms . select wire : model . live = " application.build_pack " label = " Build Pack " required >
2023-10-06 11:46:42 +00:00
< option value = " nixpacks " > Nixpacks </ option >
2023-11-10 10:33:15 +00:00
< option value = " static " > Static </ option >
2023-10-06 11:46:42 +00:00
< option value = " dockerfile " > Dockerfile </ option >
2023-11-24 14:48:23 +00:00
< option value = " dockercompose " > Docker Compose </ option >
2023-10-06 11:46:42 +00:00
</ x - forms . select >
2023-11-10 10:33:15 +00:00
@ if ( $application -> settings -> is_static || $application -> build_pack === 'static' )
2023-10-06 11:46:42 +00:00
< x - forms . select id = " application.static_image " label = " Static Image " required >
< option value = " nginx:alpine " > nginx : alpine </ option >
< option disabled value = " apache:alpine " > apache : alpine </ option >
</ x - forms . select >
@ endif
</ div >
@ if ( $application -> could_set_build_commands ())
< div class = " w-64 " >
2023-11-20 12:49:10 +00:00
< x - forms . checkbox instantSave id = " application.settings.is_static "
label = " Is it a static site? "
2023-10-06 11:46:42 +00:00
helper = " If your application is a static site or the final build assets should be served as a static site, enable this. " />
</ div >
@ endif
2023-11-27 13:28:21 +00:00
@ if ( $application -> build_pack === 'dockercompose' )
2024-01-02 12:55:35 +00:00
< x - forms . checkbox instantSave id = " application.settings.is_raw_compose_deployment_enabled "
label = " Raw Compose Deployment "
2024-01-18 10:24:07 +00:00
helper = " WARNING: Advanced use cases only. Your docker compose file will be deployed as-is. Nothing is modified by Coolify. You need to configure the proxy parts. More info in the <a href='https://coolify.io/docs/docker/compose#raw-docker-compose-deployment'>documentation.</a> " />
2024-01-02 12:55:35 +00:00
@ if ( count ( $parsedServices ) > 0 && ! $application -> settings -> is_raw_compose_deployment_enabled )
2023-11-27 13:28:21 +00:00
@ foreach ( data_get ( $parsedServices , 'services' ) as $serviceName => $service )
@ if ( ! isDatabaseImage ( data_get ( $service , 'image' )))
< div class = " flex items-end gap-2 " >
< x - forms . input
helper = " You can specify one domain with path or more with comma. You can specify a port to bind the domain to.<br><br><span class='text-helper'>Example</span><br>- http://app.coolify.io, https://cloud.coolify.io/dashboard<br>- http://app.coolify.io/api/v3<br>- http://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. "
label = " Domains for { { str( $serviceName )->headline() }} "
id = " parsedServiceDomains. { { $serviceName }}.domain " ></ x - forms . input >
@ if ( ! data_get ( $parsedServiceDomains , " $serviceName .domain " ))
< x - forms . button wire : click = " generateDomain(' { { $serviceName }}') " > Generate
Domain </ x - forms . button >
@ endif
</ div >
@ endif
@ endforeach
@ endif
@ endif
2023-09-24 19:38:11 +00:00
</ div >
@ endif
2024-01-10 10:07:53 +00:00
@ if ( $application -> build_pack !== 'dockercompose' )
2024-01-16 14:19:14 +00:00
< div class = " flex items-end gap-2 " >
< x - forms . input placeholder = " https://coolify.io " id = " application.fqdn " label = " Domains "
helper = " You can specify one domain with path or more with comma. You can specify a port to bind the domain to.<br><br><span class='text-helper'>Example</span><br>- http://app.coolify.io, https://cloud.coolify.io/dashboard<br>- http://app.coolify.io/api/v3<br>- http://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. " />
< x - forms . button wire : click = " getWildcardDomain " > Generate Domain
</ x - forms . button >
</ div >
@ endif
2023-12-04 10:41:44 +00:00
@ if ( $application -> build_pack !== 'dockercompose' )
2024-01-18 11:05:48 +00:00
< div class = " flex items-center gap-2 pt-8 " >
2024-01-18 10:40:13 +00:00
< h3 > Docker Registry </ h3 >
@ if ( $application -> build_pack !== 'dockerimage' && ! $application -> destination -> server -> isSwarm ())
< x - helper
helper = ' Push the built image to a docker registry . More info < a class = " underline "
href = " https://coolify.io/docs/docker/registry " target = " _blank " > here </ a > ' />
@ endif
</ div >
2023-11-28 17:31:04 +00:00
@ if ( $application -> destination -> server -> isSwarm ())
2023-12-18 13:01:25 +00:00
@ if ( $application -> build_pack !== 'dockerimage' )
< div > Docker Swarm requires the image to be available in a registry . More info < a
2024-01-16 14:19:14 +00:00
class = " underline " href = " https://coolify.io/docs/docker/registry "
2023-12-18 13:01:25 +00:00
target = " _blank " > here </ a >.</ div >
@ endif
2023-11-28 17:31:04 +00:00
@ endif
2023-11-24 14:48:23 +00:00
< div class = " flex flex-col gap-2 xl:flex-row " >
@ if ( $application -> build_pack === 'dockerimage' )
2023-11-28 17:31:04 +00:00
@ if ( $application -> destination -> server -> isSwarm ())
< x - forms . input required id = " application.docker_registry_image_name " label = " Docker Image " />
< x - forms . input id = " application.docker_registry_image_tag " label = " Docker Image Tag " />
@ else
< x - forms . input id = " application.docker_registry_image_name " label = " Docker Image " />
< x - forms . input id = " application.docker_registry_image_tag " label = " Docker Image Tag " />
@ endif
2023-11-24 14:48:23 +00:00
@ else
2023-11-28 17:31:04 +00:00
@ if ( $application -> destination -> server -> isSwarm ())
< x - forms . input id = " application.docker_registry_image_name " required label = " Docker Image " />
< x - forms . input id = " application.docker_registry_image_tag "
helper = " If set, it will tag the built image with this tag too. <br><br>Example: If you set it to 'latest', it will push the image with the commit sha tag + with the latest tag. "
label = " Docker Image Tag " />
@ else
< x - forms . input id = " application.docker_registry_image_name "
helper = " Empty means it won't push the image to a docker registry. "
placeholder = " Empty means it won't push the image to a docker registry. "
label = " Docker Image " />
< x - forms . input id = " application.docker_registry_image_tag "
placeholder = " Empty means only push commit sha tag. "
helper = " If set, it will tag the built image with this tag too. <br><br>Example: If you set it to 'latest', it will push the image with the commit sha tag + with the latest tag. "
label = " Docker Image Tag " />
@ endif
2023-11-24 14:48:23 +00:00
@ endif
2023-11-20 12:49:10 +00:00
2023-11-24 14:48:23 +00:00
</ div >
@ endif
2023-10-06 11:46:42 +00:00
2023-10-10 09:16:38 +00:00
@ if ( $application -> build_pack !== 'dockerimage' )
2024-01-18 11:05:48 +00:00
< h3 class = " pt-8 " > Build </ h3 >
@ if ( $application -> build_pack !== 'dockercompose' )
< div class = " w-96 " >
< x - forms . checkbox
helper = " Use a build server to build your application. You can configure your build server in the Server settings. This is experimental. For more info, check the <a href='https://coolify.io/docs/server/build-server' class='underline' target='_blank'>documentation</a>. "
instantSave id = " application.settings.is_build_server_enabled "
label = " Use a Build Server? (experimental) " />
</ div >
@ endif
2023-10-10 09:16:38 +00:00
@ if ( $application -> could_set_build_commands ())
2023-11-06 11:40:53 +00:00
@ if ( $application -> build_pack === 'nixpacks' )
< div class = " flex flex-col gap-2 xl:flex-row " >
2023-11-06 16:25:54 +00:00
< x - forms . input placeholder = " If you modify this, you probably need to have a nixpacks.toml "
id = " application.install_command " label = " Install Command " />
< x - forms . input placeholder = " If you modify this, you probably need to have a nixpacks.toml "
id = " application.build_command " label = " Build Command " />
< x - forms . input placeholder = " If you modify this, you probably need to have a nixpacks.toml "
id = " application.start_command " label = " Start Command " />
2023-11-06 11:40:53 +00:00
</ div >
2024-01-18 11:05:48 +00:00
< div > Nixpacks will detect the required configuration automatically .
< a class = " underline " href = " https://coolify.io/docs/frameworks/ " > Framework Specific Docs </ a >
</ div >
2023-11-06 11:40:53 +00:00
@ endif
2023-10-10 09:16:38 +00:00
@ endif
2023-12-17 19:56:12 +00:00
@ if ( $application -> build_pack === 'dockercompose' )
< div class = " flex flex-col gap-2 " wire : init = 'loadComposeFile(true)' >
< div class = " flex gap-2 " >
< x - forms . input placeholder = " / " id = " application.base_directory " label = " Base Directory "
helper = " Directory to use as root. Useful for monorepos. " />
< x - forms . input placeholder = " /docker-compose.yaml " id = " application.docker_compose_location "
label = " Docker Compose Location "
helper = " It is calculated together with the Base Directory:<br><span class='text-warning'> { { Str::start( $application->base_directory . $application->docker_compose_location , '/') }}</span> " />
</ div >
2023-12-18 13:01:25 +00:00
< div class = " pt-4 " > The following commands are for advanced use cases . Only modify them if you
know what are
2023-12-17 19:56:12 +00:00
you doing .</ div >
< div class = " flex gap-2 " >
< x - forms . input placeholder = " docker compose build "
id = " application.docker_compose_custom_build_command "
helper = " If you use this, you need to specify paths relatively and should use the same compose file in the custom command, otherwise the automatically configured labels / etc won't work.<br><br>So in your case, use: <span class='text-warning'>docker compose -f . { { Str::start( $application->base_directory . $application->docker_compose_location , '/') }} build</span> "
label = " Custom Build Command " />
< x - forms . input placeholder = " docker compose up -d "
id = " application.docker_compose_custom_start_command "
helper = " If you use this, you need to specify paths relatively and should use the same compose file in the custom command, otherwise the automatically configured labels / etc won't work.<br><br>So in your case, use: <span class='text-warning'>docker compose -f . { { Str::start( $application->base_directory . $application->docker_compose_location , '/') }} up -d</span> "
label = " Custom Start Command " />
{{ -- < x - forms . input placeholder = " /docker-compose.yaml " id = " application.docker_compose_pr_location "
label = " Docker Compose Location For Pull Requests "
helper = " It is calculated together with the Base Directory:<br><span class='text-warning'> { { Str::start( $application->base_directory . $application->docker_compose_pr_location , '/') }}</span> " /> -- }}
</ div >
</ div >
@ else
< div class = " flex flex-col gap-2 xl:flex-row " >
< x - forms . input placeholder = " / " id = " application.base_directory " label = " Base Directory "
helper = " Directory to use as root. Useful for monorepos. " />
@ if ( $application -> build_pack === 'dockerfile' && ! $application -> dockerfile )
< x - forms . input placeholder = " /Dockerfile " id = " application.dockerfile_location "
label = " Dockerfile Location "
helper = " It is calculated together with the Base Directory:<br><span class='text-warning'> { { Str::start( $application->base_directory . $application->dockerfile_location , '/') }}</span> " />
2023-10-10 09:16:38 +00:00
@ endif
2023-12-17 19:56:12 +00:00
@ if ( $application -> build_pack === 'dockerfile' )
< x - forms . input id = " application.dockerfile_target_build " label = " Docker Build Stage Target "
helper = " Useful if you have multi-staged dockerfile. " />
@ endif
@ if ( $application -> could_set_build_commands ())
@ if ( $application -> settings -> is_static )
< x - forms . input placeholder = " /dist " id = " application.publish_directory "
label = " Publish Directory " required />
@ else
< x - forms . input placeholder = " / " id = " application.publish_directory "
label = " Publish Directory " />
@ endif
@ endif
</ div >
2024-01-29 15:07:00 +00:00
< div > The following options are for advanced use cases . Only modify them if you
know what are
you doing .</ div >
< x - forms . input
2024-01-29 15:13:04 +00:00
helper = " You can add custom docker run options that will be used when your container is started.<br>Note: Not all options are supported, as they could mess up Coolify's automation and could cause bad experience for users.<br><br>Check the <a class='text-white underline' href='https://coolify.io/docs/custom-docker-options'>docs.</a> "
2024-01-29 15:07:00 +00:00
placeholder = " --cap-add SYS_ADMIN --device=/dev/fuse --security-opt apparmor:unconfined --ulimit nofile=1024:1024 --tmpfs /run:rw,noexec,nosuid,size=65536k "
id = " application.custom_docker_run_options " label = " Custom Docker Options " />
2023-12-17 19:56:12 +00:00
@ endif
2023-10-07 10:54:19 +00:00
@ endif
2023-11-24 14:48:23 +00:00
@ if ( $application -> build_pack === 'dockercompose' )
< x - forms . button wire : click = " loadComposeFile " > Reload Compose File </ x - forms . button >
2024-01-02 12:55:35 +00:00
@ if ( $application -> settings -> is_raw_compose_deployment_enabled )
< x - forms . textarea rows = " 10 " readonly id = " application.docker_compose_raw "
2024-01-16 14:19:14 +00:00
label = " Docker Compose Content (applicationId: { { $application->id }}) "
helper = " You need to modify the docker compose file. " />
2024-01-02 12:55:35 +00:00
@ else
< x - forms . textarea rows = " 10 " readonly id = " application.docker_compose "
label = " Docker Compose Content " helper = " You need to modify the docker compose file. " />
@ endif
2023-11-28 09:11:53 +00:00
{{ -- < x - forms . textarea rows = " 10 " readonly id = " application.docker_compose_pr "
label = " Docker PR Compose Content " helper = " You need to modify the docker compose file. " /> -- }}
2023-11-24 14:48:23 +00:00
@ endif
2023-10-07 10:54:19 +00:00
2023-08-11 20:41:47 +00:00
@ if ( $application -> dockerfile )
< x - forms . textarea label = " Dockerfile " id = " application.dockerfile " rows = " 6 " > </ x - forms . textarea >
@ endif
2023-11-24 14:48:23 +00:00
@ if ( $application -> build_pack !== 'dockercompose' )
2024-01-18 11:05:48 +00:00
< h3 class = " pt-8 " > Network </ h3 >
2023-11-24 14:48:23 +00:00
< div class = " flex flex-col gap-2 xl:flex-row " >
@ if ( $application -> settings -> is_static || $application -> build_pack === 'static' )
< x - forms . input id = " application.ports_exposes " label = " Ports Exposes " readonly />
@ else
< x - forms . input placeholder = " 3000,3001 " id = " application.ports_exposes " label = " Ports Exposes "
required
helper = " A comma separated list of ports your application uses. The first port will be used as default healthcheck port if nothing defined in the Healthcheck menu. Be sure to set this correctly. " />
@ endif
2023-12-18 13:01:25 +00:00
@ if ( ! $application -> destination -> server -> isSwarm ())
< x - forms . input placeholder = " 3000:3000 " id = " application.ports_mappings " label = " Ports Mappings "
helper = " A comma separated list of ports you would like to map to the host system. Useful when you do not want to use domains.<br><br><span class='inline-block font-bold text-warning'>Example:</span><br>3000:3000,3002:3002<br><br>Rolling update is not supported if you have a port mapped to the host. " />
@ endif
2023-11-24 14:48:23 +00:00
</ div >
< x - forms . textarea label = " Container Labels " rows = " 15 " id = " customLabels " ></ x - forms . textarea >
< x - forms . button wire : click = " resetDefaultLabels " > Reset to Coolify Generated Labels </ x - forms . button >
@ endif
2023-05-18 11:26:35 +00:00
</ div >
2023-04-19 10:42:15 +00:00
</ form >
</ div >